Difference between revisions of "SceOled"

From Vita Development Wiki
Jump to navigation Jump to search
Line 92: Line 92:
 
|}
 
|}
  
<source lang="c">int sceOledWaitReadyForDriver();</source>
+
Waits until the OLED has been initialized.
  
Waits until the OLED has been initialized.
+
<source lang="c">int sceOledWaitReadyForDriver(void);</source>
  
=== SceOledForDriver_26F9EEA8 ===
+
=== SceOledForDriver_26F9EEA8_oled_disable ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 103: Line 103:
 
| 3.60 || 0x26F9EEA8
 
| 3.60 || 0x26F9EEA8
 
|}
 
|}
 +
 +
Disables the OLED by clearing the GPIO bus 0 port 0.
  
 
<source lang="c">int SceOledForDriver_26F9EEA8_oled_disable(void);</source>
 
<source lang="c">int SceOledForDriver_26F9EEA8_oled_disable(void);</source>
  
Disables the OLED by clearing the GPIO bus 0 port 0.
+
=== SceOledForDriver_2F0C4B67_send_cmd ===
 
 
=== SceOledForDriver_2F0C4B67 ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 115: Line 115:
 
| 3.60 || 0x2F0C4B67
 
| 3.60 || 0x2F0C4B67
 
|}
 
|}
 +
 +
Sends a command to the OLED (via SPI).
  
 
<source lang="c">int SceOledForDriver_2F0C4B67_send_cmd(u8 cmd, void *buffer, int size);</source>
 
<source lang="c">int SceOledForDriver_2F0C4B67_send_cmd(u8 cmd, void *buffer, int size);</source>
 
Sends a command to the OLED (via SPI).
 
  
 
=== sceOledGetBrightnessForDriver ===
 
=== sceOledGetBrightnessForDriver ===
Line 128: Line 128:
 
|}
 
|}
  
<source lang="c">int ceOledGetBrightnessForDriver();</source>
+
Get the wide brightness value (<code>0-65536</code>).
  
Get the wide brightness value (<code>0-65536</code>).
+
<source lang="c">int sceOledGetBrightnessForDriver(void);</source>
  
 
=== sceOledDisplayOnForDriver ===
 
=== sceOledDisplayOnForDriver ===
Line 140: Line 140:
 
|}
 
|}
  
<source lang="c">int sceOledDisplayOnForDriver();</source>
+
<source lang="c">int sceOledDisplayOnForDriver(void);</source>
  
 
=== sceOledGetDisplayColorSpaceModeForDriver ===
 
=== sceOledGetDisplayColorSpaceModeForDriver ===
Line 152: Line 152:
 
<source lang="c">int sceOledGetDisplayColorSpaceModeForDriver(void);</source>
 
<source lang="c">int sceOledGetDisplayColorSpaceModeForDriver(void);</source>
  
=== SceOledForDriver_6B1E0B52 ===
+
=== SceOledForDriver_6B1E0B52_oled_enable ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 159: Line 159:
 
| 3.60 || 0x6B1E0B52
 
| 3.60 || 0x6B1E0B52
 
|}
 
|}
 +
 +
Enables the OLED by setting the GPIO bus 0 port 0.
  
 
<source lang="c">int SceOledForDriver_6B1E0B52_oled_enable(void);</source>
 
<source lang="c">int SceOledForDriver_6B1E0B52_oled_enable(void);</source>
 
Enables the OLED by setting the GPIO bus 0 port 0.
 
  
 
=== SceOledForDriver_9F4ABDDC_get_status ===
 
=== SceOledForDriver_9F4ABDDC_get_status ===
Line 184: Line 184:
 
|}
 
|}
  
<source lang="c">int sceOledDisplayOffForDriver();</source>
+
<source lang="c">int sceOledDisplayOffForDriver(void);</source>
  
 
=== sceOledGetDDBForDriver ===
 
=== sceOledGetDDBForDriver ===
Line 193: Line 193:
 
| 3.60 || 0xC9D5987C
 
| 3.60 || 0xC9D5987C
 
|}
 
|}
 +
 +
Returns the Device Descriptor Block (DDB), read with MIPI DSI command <code>read_DDB_start</code> (<code>0xA1</code>).
  
 
<source lang="c">int sceOledGetDDBForDriver(unsigned short *supplier_id, unsigned short *supplier_elective_data);</source>
 
<source lang="c">int sceOledGetDDBForDriver(unsigned short *supplier_id, unsigned short *supplier_elective_data);</source>
 
Returns the Device Descriptor Block (DDB), read with MIPI DSI command <code>read_DDB_start</code> (<code>0xA1</code>).
 
  
 
=== sceOledSetDisplayColorSpaceModeForDriver ===
 
=== sceOledSetDisplayColorSpaceModeForDriver ===
Line 208: Line 208:
 
<source lang="c">int sceOledSetDisplayColorSpaceModeForDriver(int mode);</source>
 
<source lang="c">int sceOledSetDisplayColorSpaceModeForDriver(int mode);</source>
  
=== SceOledForDriver_E30604CC ===
+
=== SceOledForDriver_E30604CC_dispatch_cmd_list ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 215: Line 215:
 
| 3.60 || 0xE30604CC
 
| 3.60 || 0xE30604CC
 
|}
 
|}
 +
 +
Dispatches the OLED cmd list (using SceOledForDriver_2F0C4B67_send_cmd).
  
 
<source lang="c">int SceOledForDriver_E30604CC_dispatch_cmd_list(void);</source>
 
<source lang="c">int SceOledForDriver_E30604CC_dispatch_cmd_list(void);</source>
 
Dispatches the OLED cmd list (using ksceOledForDriver_2F0C4B67).
 
  
 
=== sceOledSetBrightnessForDriver ===
 
=== sceOledSetBrightnessForDriver ===
Line 227: Line 227:
 
| 3.60 || 0xF9624C47
 
| 3.60 || 0xF9624C47
 
|}
 
|}
 
<source lang="c">int sceOledSetBrightnessForDriver(unsigned int brightness);</source>
 
  
 
Set the brightness (brightness needs to be in the range <code>0-65536</code>). <code>0</code> means screen turned off, <code>1</code> means screen dimmed (like if you wait for a long time without touching your screen).
 
Set the brightness (brightness needs to be in the range <code>0-65536</code>). <code>0</code> means screen turned off, <code>1</code> 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 <code>brightness=0</code>, and 16 different values for the rest (<code>real_value=brightness/4096</code>).
 
The brightness has actually 17 different values: 1 special value for <code>brightness=0</code>, and 16 different values for the rest (<code>real_value=brightness/4096</code>).
 +
 +
<source lang="c">int sceOledSetBrightnessForDriver(SceUInt32 brightness);</source>
  
 
=== SceOledForDriver_ED2D6F19_set_status ===
 
=== SceOledForDriver_ED2D6F19_set_status ===

Revision as of 01:56, 8 April 2020

Module

Known NIDs

Version Name World Privilege NID
1.69 SceOled Non-secure Kernel 0x5410837A

Libraries

Known NIDs

Version Name World Visibility NID
1.69 SceOledForDriver Non-secure Kernel 0x60C7478A

Resources

TODO: move to OLED.

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 Size Buf Description
178 1 Unknown Unknown
249 1 or 22 Unknown, for example <0x01, 0xCFBE9F9F, 0xCBC2C9D7, 0xDEE3E1BB, 0xFAD3D0D6, 0x002FE6ED, 0x2F> (Little-Endian) Change Brightness

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