Module
Version |
World |
Privilege
|
1.69-3.60 |
Non-secure |
Kernel
|
Libraries
Known NIDs
Version |
Name |
World |
Visibility |
NID
|
1.69 |
SceOledForDriver |
Non-secure |
Kernel |
0x60C7478A
|
Resources
TODO: move to OLED.
PS Vita OLED models:
- AMS495QA01
- Other models?
Types
enum SceOledError {
SCE_OLED_ERROR_INVALID_BRIGHTNESS_VALUE = 0x803F0A02,
SCE_OLED_ERROR_INVALID_READY_STATUS = 0x803F0A03,
SCE_OLED_ERROR_NOT_READY = 0x803F0A04,
SCE_OLED_ERROR_INTERNAL = 0x803F0A05
};
enum SceOledStatus {
SCE_OLED_STATUS_NOT_READY = 0,
SCE_OLED_STATUS_READY = 1,
SCE_OLED_STATUS_ERROR = 2
};
struct SceOledCmd {
unsigned char cmd,
unsigned char size,
unsigned char buf[size]
}
A cmd_queue
is a contiguous array of SceOledCmd
of different sizes. To get the next SceOledCmd
of a queue, do:
struct SceOledCmd *cur_cmd = ...
struct SceOledCmd *next_cmd = &(cur_cmd->buf) + cur_cmd->size;
if (next_cmd->cmd == 0 || next_cmd->cmd == 255) {...} // End of queue
Available commands
Cmd
|
Name
|
Size
|
Buf
|
Description
|
0x6
|
GET_RED_CHANNEL
|
0x1
|
Unknown
|
Unknown
|
0x7
|
GET_GREEN_CHANNEL
|
0x1
|
Unknown
|
Unknown
|
0x8
|
GET_BLUE_CHANNEL
|
0x1
|
Unknown
|
Unknown
|
0xA
|
GET_POWER_MODE
|
0x1
|
Unknown
|
Unknown
|
0xB
|
GET_ADDRESS_MODE
|
0x1
|
Unknown
|
Unknown
|
0xC
|
GET_PIXEL_FORMAT
|
0x1
|
Unknown
|
Unknown
|
0xD
|
GET_DISPLAY_MODE
|
0x1
|
Unknown
|
Unknown
|
0xF
|
GET_DIAGNOSTIC_RESULT
|
0x1
|
Unknown
|
Unknown
|
0x26
|
SET_GAMMA_CURVE
|
0x1
|
Unknown
|
Unknown
|
0x36
|
SET_ADDRESS_MODE
|
0x1
|
Unknown
|
Unknown
|
0x3A
|
SET_PIXEL_FORMAT
|
0x1
|
Unknown
|
Unknown
|
0xA1
|
READ_DDB_START
|
0x5
|
Unknown
|
Unknown
|
0xB0
|
GLOBAL_PARAMETER
|
0x1
|
Unknown
|
Unknown
|
0xB1
|
ELVSS_CON
|
0x3
|
Unknown
|
Unknown
|
0xB2
|
TEMP_SWIRE
|
0x1
|
Unknown
|
Unknown
|
0xB3
|
SCR_CONTROL
|
0x1
|
Unknown
|
Unknown
|
0xB4
|
SCR_GAMMA
|
0x1
|
Unknown
|
Unknown
|
0xB5
|
SCR_LUT
|
0x1
|
Unknown
|
Unknown
|
0xC0
|
ACL_CONTROL
|
0x1
|
Unknown
|
Unknown
|
0xC1
|
ACL_PROFILE
|
0x1C
|
Unknown
|
Unknown
|
0xC2
|
ACL1_DUTY
|
0x1
|
Unknown
|
Unknown
|
0xC3
|
ACL1_ACWE
|
0x1
|
Unknown
|
Unknown
|
0xC6
|
SET_DISPLAY_1
|
0xB
|
Unknown
|
Unknown
|
0xC7
|
SET_DISPLAY_2
|
0x1
|
Unknown
|
Unknown
|
0xC8
|
SET_DISPLAY_3
|
0x1
|
Unknown
|
Unknown
|
0xC9
|
SET_DISPLAY_4
|
0x3
|
Unknown
|
Unknown
|
0xD0
|
SET_OTP1
|
0x1
|
Unknown
|
Unknown
|
0xD1
|
SET_OTP2
|
0x1
|
Unknown
|
Unknown
|
0xD2
|
SET_NORMAL_ADJUST_MTP
|
0x12
|
Unknown
|
Unknown
|
0xD3
|
SET_DARK_ADJUST_MTP
|
0x12
|
Unknown
|
Unknown
|
0xF0
|
PASSWD1
|
0x2
|
Unknown
|
Unknown
|
0xF1
|
PASSWD2
|
0x2
|
Unknown
|
Unknown
|
0xF3
|
MAIN_POWER_SEQUENCE
|
0x6
|
Unknown
|
Unknown
|
0xF4
|
SET_POWER_CONTROL_1
|
0x3
|
Unknown
|
Unknown
|
0xF5
|
SET_POWER_CONTROL_2
|
0x5
|
Unknown
|
Unknown
|
0xF6
|
SET_DISPLAY_5
|
0x1
|
Unknown
|
Unknown
|
0xF7
|
GTCON
|
0x1
|
Unknown
|
Unknown
|
0xF8
|
SET_PANEL_CONTROL
|
0x13
|
Unknown
|
Unknown
|
0xF9
|
SET_NORMAL_GAMMA_CONTROL
|
0x16
|
Unknown, for example <0x01, 0xCFBE9F9F, 0xCBC2C9D7, 0xDEE3E1BB, 0xFAD3D0D6, 0x002FE6ED, 0x2F> (Little-Endian)
|
Change Brightness
|
0xFA
|
SET_DARK_GAMMA_CONTROL
|
0x16
|
Unknown
|
Unknown
|
SceOledForDriver
sceOledWaitReadyForDriver
Version |
NID
|
3.60 |
0x0CC6BCB4
|
Waits until the OLED has been initialized.
int sceOledWaitReadyForDriver(void);
SceOledForDriver_26F9EEA8_oled_disable
Version |
NID
|
3.60 |
0x26F9EEA8
|
Disables the OLED by clearing the GPIO bus 0 port 0.
int SceOledForDriver_26F9EEA8_oled_disable(void);
SceOledForDriver_2F0C4B67_send_cmd
Version |
NID
|
3.60 |
0x2F0C4B67
|
Sends a command to the OLED (via SPI).
int SceOledForDriver_2F0C4B67_send_cmd(u8 cmd, void *buffer, int size);
sceOledGetBrightnessForDriver
Version |
NID
|
3.60 |
0x43EF811A
|
Get the wide brightness value (0-65536
).
int sceOledGetBrightnessForDriver(void);
sceOledDisplayOnForDriver
Version |
NID
|
3.60 |
0x4C7836C7
|
int sceOledDisplayOnForDriver(void);
sceOledGetDisplayColorSpaceModeForDriver
Version |
NID
|
3.60 |
0x4F8A1D4A
|
int sceOledGetDisplayColorSpaceModeForDriver(void);
SceOledForDriver_6B1E0B52_oled_enable
Version |
NID
|
3.60 |
0x6B1E0B52
|
Enables the OLED by setting the GPIO bus 0 port 0.
int SceOledForDriver_6B1E0B52_oled_enable(void);
SceOledForDriver_9F4ABDDC_get_status
Version |
NID
|
0.940-3.60 |
0x9F4ABDDC
|
Returns the OLED status by reading the GPIO bus 0 port 0.
int SceOledForDriver_9F4ABDDC_get_status(void);
sceOledDisplayOffForDriver
Version |
NID
|
3.60 |
0xBC84602E
|
int sceOledDisplayOffForDriver(void);
sceOledGetDDBForDriver
Version |
NID
|
3.60 |
0xC9D5987C
|
Returns the Device Descriptor Block (DDB), read with MIPI DSI command read_DDB_start
(0xA1
).
int sceOledGetDDBForDriver(unsigned short *supplier_id, unsigned short *supplier_elective_data);
sceOledSetDisplayColorSpaceModeForDriver
Version |
NID
|
3.60 |
0xDABBD9D3
|
int sceOledSetDisplayColorSpaceModeForDriver(int mode);
SceOledForDriver_E30604CC_dispatch_cmd_list
Version |
NID
|
3.60 |
0xE30604CC
|
Dispatches the OLED cmd list (using SceOledForDriver_2F0C4B67_send_cmd).
int SceOledForDriver_E30604CC_dispatch_cmd_list(void);
sceOledSetBrightnessForDriver
Version |
NID
|
3.60 |
0xF9624C47
|
Set the brightness (brightness needs to be in the range 0-65536
). 0
means screen turned off, 1
means screen dimmed (like if you wait for a long time without touching your screen).
The brightness has actually 17 different values: 1 special value for brightness=0
, and 16 different values for the rest (real_value=brightness/4096
).
int sceOledSetBrightnessForDriver(SceUInt32 brightness);
SceOledForDriver_ED2D6F19_set_status
Version |
NID
|
0.940-3.60 |
0xED2D6F19
|
Used to enable or disable.
// status: 0: disable, 1: enable
int SceOledForDriver_ED2D6F19_set_status(int status);
SceOledForDriver_DDB1412B_reset
Version |
NID
|
0.940-3.60 |
0xDDB1412B
|
Used to reset.
int SceOledForDriver_DDB1412B_reset(void);
SceOledForDriver_3C990F53
Version |
NID
|
0.996 |
0x3C990F53
|
3.60 |
not present
|
Returns 0 on success.
int SceOledForDriver_3C990F53(void);