ScePower: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 467: Line 467:
|}
|}


Temp name was scePowerGetGpuEs4ClockFrequencyForDriver
Temp name was scePowerGetGpuEs4ClockFrequencyForDriver, scePowerGetDeviceCountForDriver.


<source lang="C">int scePowerGetGpuClockFrequencyInternalForDriver(SceInt32 *corefreq, SceInt32 *mpfreq);</source>
<source lang="C">int scePowerGetGpuClockFrequencyInternalForDriver(SceInt32 *corefreq, SceInt32 *mpfreq);</source>

Revision as of 15:19, 28 May 2022

Module

Version World Privilege
1.69-3.60 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
1.69-3.60 ScePower Non-secure User 0x1082DA7F
1.69-3.60 ScePowerForDriver Non-secure Kernel 0x1590166F
1.69-3.60 SceLedForDriver Non-secure Kernel 0x282C1323

Clocks

Default (in Shell)

Arm           : 333
Gpu(Proc)     : 41
GpuXbar       : 111
Bus           : 222
Compat        : 0
Venezia       : 166
Dmac5         : 166
Vip           : 0
Sys           : 190
CameraBus     : 0
Gpu(Internal) : 41, 41

ScePower

scePowerGetBatteryCycleCount

Version NID
1.69-3.60 0x008A54B9

scePowerRequestColdReset

Version NID
1.69-3.60 0x0442D852

scePowerRegisterCallback

Version NID
1.69-3.60 0x04B7766E

scePowerGetGpuXbarClockFrequency

Version NID
1.69-3.60 0x0A750DEE

scePowerIsBatteryExist

Version NID
1.69-3.60 0x0AFD0D8B

scePowerRequestDisplayOff

Version NID
3.60 0x160EB506

scePowerGetGpuClockFrequency

Version NID
0.931-0.990 0x1B04A1D6
1.69-3.60 0x1B04A1D6

scePowerGetBatteryRemainMaxLevel

Version NID
3.60 0x1DB00F10

scePowerIsBatteryCharging

Version NID
1.69-3.60 0x1E490401

scePowerGetBatteryLifePercent

Version NID
1.69-3.60 0x2085D15D

scePowerBatteryUpdateInfo

Version NID
0.990-3.60 0x27F3292C

scePowerGetBatteryTemp

Version NID
1.69-3.60 0x28E12023

scePowerRequestStandby

Version NID
1.69-3.60 0x2B7C7CF4

scePowerSetConfigurationMode

Version NID
1.69-3.60 0x3CE187B6

scePowerRequestDisplayOn

Version NID
3.60 0x3EA75C88

scePowerGetBusClockFrequency

Version NID
3.60 0x478FE6F5

scePowerGetBatteryVolt

Version NID
1.69-3.60 0x483CE86B

scePowerSetUsingWireless

Version NID
1.69-3.60 0x4D695C1F

scePowerGetCaseTemp

Version NID
1.69-3.60 0x525592E4

scePowerSetGpuClockFrequency

Version NID
1.69-3.60 0x717DB06C

scePowerSetArmClockFrequency

Version NID
1.69-3.60 0x74DB5AE5

scePowerIsSuspendRequired

Version NID
1.69-3.60 0x78A1A796

scePowerIsRequest

Version NID
1.69-3.60 0x7FA406DD

scePowerGetBatteryElec

Version NID
1.69-3.60 0x862AE1A6

scePowerIsPowerOnline

Version NID
1.69-3.60 0x87440F5E

scePowerGetBatteryLifeTime

Version NID
1.69-3.60 0x8EFB3FA2

scePowerGetBatteryRemainCapacity

Version NID
1.69-3.60 0x94F5A53F

scePowerIsLowBatteryInhibitUpdateReboot

Version NID
3.60 0x9AA05A48

scePowerSetGpuXbarClockFrequency

Version NID
1.69-3.60 0xA7739DBE

scePowerGetBatterySOH

Version NID
1.69-3.60 0xA88A2B65

scePowerGetArmClockFrequency

Version NID
1.69-3.60 0xABC6F88F

scePowerRequestSuspend

Version NID
1.69-3.60 0xAC32C9CC

scePowerSetIdleTimerCount

Version NID
1.69-3.60 0xB11EF149

scePowerGetBatteryChargingStatus

Version NID
1.69-3.60 0xB4432BC8

scePowerSetBusClockFrequency

Version NID
3.60 0xB8D7B3FB

scePowerIsLowBattery

Version NID
1.69-3.60 0xD3075926

scePowerGetUsingWireless

Version NID
1.69-3.60 0xD541FF03

scePowerCancelRequest

Version NID
1.69-3.60 0xDB62C9CF

scePowerUnregisterCallback

Version NID
1.69-3.60 0xDFA8BAF8

scePowerIsLowBatteryInhibitUpdateDownload

Version NID
3.60 0xE3E45636

scePowerGetBatteryRemainLevel

Version NID
3.60 0xEA3E3715

scePowerGetBatteryFullCapacity

Version NID
1.69-3.60 0xFD18A0FF

ScePowerForDriver

scePowerGetArmClockFrequencyForDriver

Version NID
1.69-3.60 0xABC6F88F
int scePowerGetArmClockFrequencyForDriver(void);

scePowerSetArmClockFrequencyForDriver

Version NID
1.69-3.60 0x74DB5AE5
int scePowerSetArmClockFrequencyForDriver(int clock);

scePowerGetArmClockFrequencyProcForDriver

Version NID
3.60 0x2E9000F7
int scePowerGetArmClockFrequencyProcForDriver(SceUID pid);

scePowerSetArmClockFrequencyProcForDriver

Version NID
3.60 0x86CB5218
int scePowerSetArmClockFrequencyProcForDriver(SceUID pid, int clock);

scePowerGetGpuClockFrequencyForDriver

Version NID
0.931-1.69 0x1B04A1D6
3.60 moved to ScePower
int scePowerGetGpuClockFrequencyForDriver(void);

scePowerSetGpuClockFrequencyForDriver

Version NID
1.69-3.60 0x717DB06C
int scePowerSetGpuClockFrequencyForDriver(int clock);

scePowerGetGpuClockFrequencyProcForDriver

Version NID
3.60 0x642E0AF2
int scePowerGetGpuClockFrequencyProcForDriver(SceUID pid);

scePowerSetGpuClockFrequencyProcForDriver

Version NID
3.60 0xB104EFE2
int scePowerSetGpuClockFrequencyProcForDriver(SceUID pid, int clock);

scePowerGetGpuClockFrequencyInternalForDriver

Version NID
3.60 0x475BCC82

Temp name was scePowerGetGpuEs4ClockFrequencyForDriver, scePowerGetDeviceCountForDriver.

int scePowerGetGpuClockFrequencyInternalForDriver(SceInt32 *corefreq, SceInt32 *mpfreq);

scePowerSetGpuClockFrequencyInternalForDriver

Version NID
3.60 0x264C24FC

Temp name was scePowerSetGpuEs4ClockFrequencyForDriver

int scePowerSetGpuClockFrequencyInternalForDriver(SceInt32 corefreq, SceInt32 mpfreq);

scePowerGetGpuXbarClockFrequencyForDriver

Version NID
1.69-3.60 0x0A750DEE
int scePowerGetGpuXbarClockFrequencyForDriver(void);

scePowerSetGpuXbarClockFrequencyForDriver

Version NID
1.69-3.60 0xA7739DBE
int scePowerSetGpuXbarClockFrequencyForDriver(int clock);

scePowerGetGpuXbarClockFrequencyProcForDriver

Version NID
3.60 0x62C5406C
int scePowerGetGpuXbarClockFrequencyProcForDriver(SceUID pid);

scePowerSetGpuXbarClockFrequencyProcForDriver

Version NID
3.60 0x8D18F728
int scePowerSetGpuXbarClockFrequencyProcForDriver(SceUID pid, int clock);

scePowerGetBusClockFrequencyForDriver

Version NID
3.60 0x478FE6F5
int scePowerGetBusClockFrequencyForDriver(void);

scePowerSetBusClockFrequencyForDriver

Version NID
3.60 0xB8D7B3FB
int scePowerSetBusClockFrequencyForDriver(int clock);

scePowerGetBusClockFrequencyProcForDriver

Version NID
3.60 0x2777A517
int scePowerGetBusClockFrequencyProcForDriver(SceUID pid);

scePowerSetBusClockFrequencyProcForDriver

Version NID
3.60 0x20A33D58
int scePowerSetBusClockFrequencyProcForDriver(SceUID pid, int clock);

scePowerGetCompatClockFrequencyForDriver

Version NID
3.60 0xCBCC11CC
int scePowerGetCompatClockFrequencyForDriver(void);

scePowerSetCompatClockFrequencyForDriver

Version NID
3.60 0xFFC84E69
int scePowerSetCompatClockFrequencyForDriver(int clock);

scePowerGetVeneziaClockFrequencyForDriver

Version NID
3.60 0x64641E6A
int scePowerGetVeneziaClockFrequencyForDriver(void);

scePowerSetVeneziaClockFrequencyForDriver

Version NID
3.60 0x621BD8FD
int scePowerSetVeneziaClockFrequencyForDriver(int clock);

scePowerGetDmac5ClockFrequencyForDriver

Version NID
3.60 0xF1E14EA9
int scePowerGetDmac5ClockFrequencyForDriver(void);

scePowerSetDmac5ClockFrequencyForDriver

Version NID
3.60 0xA902CDDF
int scePowerSetDmac5ClockFrequencyForDriver(int clock);

scePowerGetVipClockFrequencyForDriver

Version NID
3.60 0x0E58FCDF

Temp name was scePowerGetVeneziaForDriver.

int scePowerGetVipClockFrequencyForDriver(void);

scePowerSetVipClockFrequencyForDriver

Version NID
3.60 0xE5573571

Temp name was scePowerSetVeneziaForDriver.

VIP is set to ?222MHz? by system when video is played back, even in PspEmu. ?The two clocks it sets are 55MHz and 83MHz.?

Related to Venezia.

int scePowerSetVipClockFrequencyForDriver(int clock);

scePowerGetSysClockFrequencyForDriver

Version NID
3.60 0xC63DACD5
int scePowerGetSysClockFrequencyForDriver(void);

scePowerSetSysClockFrequencyForDriver

Version NID
0.931 not present
0.990-3.60 0x0E333BEC

Probably settings DRAM clock.

However, since the CPU has a cache, it is not very effective with cache-enabled memory.

Access speed is 1.01 times faster in memory with some caches disabled.

int scePowerSetSysClockFrequencyForDriver(int clock);

scePowerGetCameraBusClockFrequencyForDriver

Version NID
3.60 0x668F01D4
int scePowerGetCameraBusClockFrequencyForDriver(void);

scePowerSetCameraBusClockFrequencyForDriver

Version NID
3.60 0xC743E392
int scePowerSetCameraBusClockFrequencyForDriver(int clock);

scePowerSetCallbackStateForDriver

Version NID
3.60 0xA6FF5997

scePowerSetDisplayBrightnessForDriver

Version NID
3.60 0x43D5CE1D

scePowerGetDisplayMaxBrightnessForDriver

Version NID
3.60 0xD8759B55

scePowerSetDisplayMaxBrightnessForDriver

Version NID
3.60 0x77027B6B
// ex: scePowerSetDisplayMaxBrightnessForDriver(0x10000);
// ex: scePowerSetDisplayMaxBrightnessForDriver(0xC4EC);
int scePowerSetDisplayMaxBrightnessForDriver(int unk);

scePowerSetDisplayBrightnessForDriver

Version NID
0.931-0.990 not present
3.60 0x43D5CE1D

scePowerTickForDriver

Version NID
0.931-0.990 not present
3.60 0xEFD3C963

Generate a power tick, preventing unit from powering off and turning off display.

int scePowerTickForDriver(SceUInt32 type);

ScePowerForDriver_394DE492

Version NID
3.60 0x394DE492

Returns a global boolean variable indicating if display brightness change is allowed.

int ScePowerForDriver_394DE492(void);

scePowerSetStandbyButtonPushTimeForDriver

Version NID
3.60 0x675A84ED

derived from vshPowerSetStandbyButtonPushTime

int scePowerSetStandbyButtonPushTimeForDriver(int a1);

scePowerSetPsButtonPushTimeForDriver

Version NID
3.60 0xCF8F0529

derived from vshPowerSetPsButtonPushTime

int scePowerSetPsButtonPushTimeForDriver(int a1);

scePowerGetWakeupFactorForDriver

Version NID
3.60 0x9F26222A

derived from vshPowerGetWakeupFactor

int scePowerGetWakeupFactorForDriver(void);

scePowerGetPowerSwModeForDriver

Version NID
3.60 0x165CE085

Derived from PSP NID.

/**
 * Unknow, get ??? something
 *
 * @returns On PSP, 0 or 1 or 2 or 3, default to 2, on PS Vita, 4 is a possible value
 */
int scePowerGetPowerSwModeForDriver(void);

scePowerSetPowerSwModeForDriver

Version NID
3.60 0x0CD21B1F

Derived from PSP NID.

int scePowerSetPowerSwModeForDriver(int mode);

scePowerSetPowerSwMode2ForDriver

Version NID
3.60 0xC1853BA7

This is a not validated name.

derived from vshPowerSetPowerSwMode

int scePowerSetPowerSwMode2ForDriver(int power_sw_mode);

scePowerGetBatteryCycleCountForDriver

Version NID
1.69-3.60 0x008A54B9

scePowerGetResumeCountForDriver

Version NID
3.60 0x0074EF9B

scePowerIsRequestForDriver

Version NID
1.69-3.60 0x7FA406DD

scePowerCancelRequestForDriver

Version NID
1.69-3.60 0xDB62C9CF

scePowerRequestShutdownForDriver

Version NID
0.990-3.60 0x8921A7A0

scePowerRequestSoftResetForDriver

Version NID
1.69-3.60 0x2875994B
/**
 * Requests PS Vita to do a soft reset
 *
 * @return always 0
 */
int scePowerRequestSoftResetForDriver(void);

scePowerRequestColdResetForDriver

Version NID
1.69-3.60 0x0442D852
/**
 * Requests PS Vita to do a cold reset
 *
 * @return always 0
 */
int scePowerRequestColdResetForDriver(void);

scePowerRequestHibernateForDriver

Version NID
3.60 0x08951418

derived from vshPowerRequestHibernate

/**
 * Requests PS Vita to enter hibernate mode
 *
 * @return always 0
 */
int scePowerRequestHibernateForDriver(void);

scePowerRequestSuspendForDriver

Version NID
1.69-3.60 0xAC32C9CC
/**
 * Requests PS Vita to enter suspend mode
 *
 * @return always 0
 */
int scePowerRequestSuspendForDriver(void);

scePowerRequestStandbyForDriver

Version NID
1.69-3.60 0x2B7C7CF4
/**
 * Requests PS Vita to enter standby mode
 *
 * @return always 0
 */
int scePowerRequestStandbyForDriver(void);

scePowerRequestResumeForDriver

Version NID
3.60 0x02DB1035
/**
 * Requests PS Vita to resume
 *
 * @return always 0
 */
int scePowerRequestResumeForDriver(void);

scePowerRequestDisplayOffForDriver

Version NID
3.60 0x160EB506
/**
 * Requests PS Vita to turn off display
 *
 * @return always 0
 */
int scePowerRequestDisplayOffForDriver(void);

scePowerRequestDisplayOnForDriver

Version NID
3.60 0x3EA75C88
/**
 * Requests PS Vita to turn on display
 *
 * @return always 0
 */
int scePowerRequestDisplayOnForDriver(void);

scePowerIsSuspendRequiredForDriver

Version NID
1.69-3.60 0x78A1A796

scePowerRegisterCallbackForDriver

Version NID
1.69-3.60 0x04B7766E

scePowerUnregisterCallbackForDriver

Version NID
1.69-3.60 0xDFA8BAF8

scePowerGetIdleTimerForDriver

Version NID
3.60 0xEDC13FE5

scePowerSetIdleTimerForDriver

Version NID
3.60 0x6BC26FC7

scePowerSetIdleTimerCountProcForDriver

Version NID
3.60 0xFB5C3C75

scePowerSetIdleCallbackForDriver

Version NID
0.990-3.60 0x1BA2FCAE
// idx: 0-7
int scePowerSetIdleCallbackForDriver(SceUInt32 idx, int maybe_flags, SceUInt32 duration, int idle_cb_info_3, void *cb_func, int idle_cb_info_5);

ScePowerForDriver_660D5AB4

Version NID
0.931 not present
0.990-3.60 0x660D5AB4

Set some value of the selected Idle Callback to 2.

// idx: 0-7
int ScePowerForDriver_660D5AB4(SceUInt32 idx);

scePowerSetProcessIdleCallbackForDriver

Version NID
3.60 0x0856FD0A
int scePowerSetProcessIdleCallbackForDriver(int idle_cb_info_1, int idle_cb_info_2);

scePowerGetCaseTempForDriver

Version NID
1.69-3.60 0x525592E4

Exact same code as #scePowerGetBatteryTempForDriver.

scePowerIsBatteryExistForDriver

Version NID
1.69-3.60 0x0AFD0D8B

scePowerWaitRequestCompletionForDriver

Version NID
3.60 0x3951AF53

Temp name was scePowerEncodeUBattery (PSP NID wrong bruteforce).

scePowerSetBatteryFakeStatusForDriver

Version NID
3.60 0x0C6973B8

derived from _vshPowerSetBatteryFakeStatus

int scePowerSetBatteryFakeStatusForDriver(int status);

scePowerIsPowerOnlineForDriver

Version NID
1.69-3.60 0x87440F5E

scePowerIsBatteryChargingForDriver

Version NID
1.69-3.60 0x1E490401

scePowerGetBatteryLifePercentForDriver

Version NID
1.69-3.60 0x2085D15D

scePowerBatteryUpdateInfoForDriver

Version NID
0.990-3.60 0x27F3292C

scePowerGetBatteryTempForDriver

Version NID
1.69-3.60 0x28E12023

scePowerGetBatteryVoltForDriver

Version NID
1.69-3.60 0x483CE86B

scePowerGetBatteryElecForDriver

Version NID
1.69-3.60 0x862AE1A6

scePowerGetBatteryLifeTimeForDriver

Version NID
1.69-3.60 0x8EFB3FA2

scePowerGetBatteryRemainCapacityForDriver

Version NID
1.69-3.60 0x94F5A53F

To document: in which unit is the remaining capacity.

int scePowerGetBatteryRemainCapacityForDriver(void);

scePowerGetBatteryRemainLevelForDriver

Version NID
3.60 0xEA3E3715

If Syscon version < 0x1040105, returns the remaining battery level, else returns 0 (SCE_POWER_BATTERY_REMAIN_LEVEL_INVALID).

#define SCE_POWER_BATTERY_REMAIN_LEVEL_INVALID 0
#define SCE_POWER_BATTERY_REMAIN_LEVEL_0_25_PERCENTS 1
#define SCE_POWER_BATTERY_REMAIN_LEVEL_25_50_PERCENTS 2
#define SCE_POWER_BATTERY_REMAIN_LEVEL_50_75_PERCENTS 3
#define SCE_POWER_BATTERY_REMAIN_LEVEL_75_100_PERCENTS 4

int scePowerGetBatteryRemainLevelForDriver(void);

scePowerGetBatteryRemainMaxLevelForDriver

Version NID
3.60 0x1DB00F10

If Syscon version < 0x1040105, returns 4 (SCE_POWER_BATTERY_REMAIN_LEVEL_75_100_PERCENTS), else returns 0 (SCE_POWER_BATTERY_REMAIN_LEVEL_INVALID).

int scePowerGetBatteryRemainLevelForDriver(void);

scePowerGetBatterySOHForDriver

Version NID
1.69-3.60 0xA88A2B65

scePowerGetBatteryChargingStatusForDriver

Version NID
1.69-3.60 0xB4432BC8

Returns battery charging status.

// To verify
#define SCE_POWER_ERROR_BATTERY_NOT_CONNECTED 0x802B0100
#define SCE_POWER_ERROR_BATTERY_NOT_WORKING 0x802B0101

#define SCE_BATTERY_STATUS_POWER_OFFLINE 0
#define SCE_BATTERY_STATUS_CHARGING_NORMAL 1
#define SCE_BATTERY_STATUS_CHARGE_FORBIDDEN 1
#define SCE_BATTERY_STATUS_CHARGING_USB 3

int scePowerGetBatteryChargingStatusForDriver(void);

scePowerIsLowBatteryForDriver

Version NID
1.69-3.60 0xD3075926

scePowerIsSomethingBatteryForDriver

Version NID
3.60 0x0D56C601

return SceSysconForDriver_ACEE1C70

scePowerIsSomethingBattery2ForDriver

Version NID
3.60 0x627A89C6

return SceSysconForDriver_4A184B7C

scePowerGetBatteryFullCapacityForDriver

Version NID
1.69-3.60 0xFD18A0FF

scePowerBatteryDisableUsbChargingForDriver

Version NID
3.60 0x90285886
int scePowerBatteryDisableUsbChargingForDriver(void);

scePowerBatteryEnableUsbChargingForDriver

Version NID
3.60 0x733F973B
int scePowerBatteryEnableUsbChargingForDriver(void);

scePowerBatteryForbidChargingForDriver

Version NID
3.60 0x166922EC
int scePowerBatteryForbidChargingForDriver(void);

scePowerBatteryPermitChargingForDriver

Version NID
3.60 0xDD3D4DAC
int scePowerBatteryPermitChargingForDriver(void);

scePowerBatteryStopUsbChargingForDriver

Version NID
3.60 0xACC857A4
int scePowerBatteryStopUsbChargingForDriver(void);

scePowerBatterySetUsbStatusForDriver

Version NID
3.60 0xE4E3C316
int scePowerBatterySetUsbStatusForDriver(int unk);

scePowerSetWakeupConditionForDriver

Version NID
0.990-3.60 0xF535D928
// cond: 4: WlanBt related, 0x20: WlanBt related, 0x8000: USB charge
int scePowerSetWakeupConditionForDriver(int cond, SceBool enable);

scePowerWlanActivateForDriver

Version NID
0.931-3.60 0x6D2CA84B
int scePowerWlanActivateForDriver(void);

scePowerWlanDeactivateForDriver

Version NID
0.931-3.60 0x23BB0A60
int scePowerWlanDeactivateForDriver(void);

scePowerIsWlanActivatedForDriver_temp_name

Version NID
0.931-3.60 0x2B51FE2F

This is a temporary name.

int scePowerIsWlanActivatedForDriver(void);

set_some_battery_info

Version NID
3.60 0xC62B6164

ScePowerForDriver_8C0D2051

Version NID
3.60 0x8C0D2051

Gets the battery status obtained using SceSyscon#SceSysconForDriver_A2FE9BF9.

Called by SceUdcd when SceUdcdAlarmTickTimer is triggered.

int ScePowerForDriver_8C0D2051(SceUInt32 *pResult);

scePowerGetUsingWirelessProcForDriver

Version NID
3.60 0x06AF03DB
int scePowerGetUsingWirelessProcForDriver(SceUID pid);

scePowerGetUsingWlanProcForDriver

Version NID
3.60 0x2784A6BD
int scePowerGetUsingWlanProcForDriver(SceUID pid);

scePowerSetUsingWlanProcForDriver

Version NID
3.60 0x4A69163A

ScePowerForDriver_0D80B917

Version NID
3.60 0x0D80B917

Maybe related to #scePowerGetUsingWirelessProcForDriver.

int ScePowerForDriver_0D80B917(SceUID pid);

ScePowerForDriver_991BDEAF

Version NID
1.03-3.60 0x991BDEAF
// idx: 0-7
int ScePowerForDriver_991BDEAF(SceSize idx, SceUInt32 value);

ScePowerForDriver_38415146

Version NID
1.03-3.60 0x38415146

Sets a global variable and sets global event flag 0x2000.

Related to LED.

int ScePowerForDriver_38415146(SceBool enable);

SceLedForDriver

sceLedSetModeForDriver

Version NID
3.60 0xEA24BE03

Maybe DevKit LEDs as there are 8 LEDs, or maybe led=2 is PS button LED.

typedef struct SceLedConfiguration { // size is 0x14 on FW 3.60
   SceSize size; // Size of this structure
   SceUInt32 maybe_onTime; // ex: 2
   SceUInt32 maybe_offTime; // ex: 3
   SceInt32 blinkTime; // ex: 60, -1
   SceUInt32 maybe_endBlinkState; // ex: 0
} SceLedConfiguration;

#define SCE_LED_MODE_OFF 		0 // Turn a LED OFF.
#define SCE_LED_MODE_ON 		1 // Turn a LED ON.
#define SCE_LED_MODE_BLINK 		2 // Set a blink event for a LED.
#define SCE_LED_MODE_SELECTIVE_EXEC 3 // Register LED configuration commands and execute them. Still not completely known how that mode works.
#define SCE_LED_MODE_UNK_4 		4 // only works with led 2

// ex:
// uint32_t config_1[5] = {0x14, 2, 3, 0x3C, 0};
// uint32_t config_2[5] = {0x14, 2, 3, -1, 0};
// sceLedSetModeForDriver(1, 2, (SceLedConfiguration *)&config);
// sceLedSetModeForDriver(3, 2, (SceLedConfiguration *)&config);

// led: valid values are 0-7, 1: used when sdstor read/write from SD, 3: used when sdstor read/write from MMC
// mode: valid values are 0-4

int sceLedSetModeForDriver(int led, int mode, SceLedConfiguration *pConfig);