SceLowio: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 418: Line 418:
== SceDsiForDriver ==
== SceDsiForDriver ==


=== SceDsiForDriver_114D1413 ===
=== ksceDsiDisableHead ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 426: Line 426:
|}
|}


<source lang="c">int SceDsiForDriver_114D1413_disable_bus1(int bus);</source>
<source lang="c">int ksceDsiDisableHead(int head);</source>


=== SceDsiForDriver_3FB0DF1F ===
=== ksceDsiDcsRead ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 436: Line 436:
|}
|}


<source lang="c">int SceDsiForDriver_3FB0DF1F_dsi_dcs_read(int bus, unsigned short cmd, void *buffer, unsigned int size);</source>
<source lang="c">int ksceDsiDcsRead(int head, unsigned short param, void *buff, unsigned int size);
</source>


MIPI DSI DCS Read (0x06)
MIPI DSI DCS Read (0x06)


=== SceDsiForDriver_4DF9E924 ===
=== ksceDsiGetPixelClock ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 448: Line 449:
|}
|}


<source lang="c">int SceDsiForDriver_4DF9E924_get_current_pixelclock(int bus);</source>
<source lang="c">int ksceDsiGetPixelClock(int head);</source>


=== SceDsiForDriver_5BE5AA9B ===
=== ksceDsiEnableHead ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 458: Line 459:
|}
|}


<source lang="c">int SceDsiForDriver_5BE5AA9B_enable_bus(int bus);</source>
<source lang="c">int ksceDsiEnableHead(int head);</source>


=== SceDsiForDriver_7640F607 ===
=== SceDsiForDriver_6F8029A1 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x6F8029A1
|}
 
<source lang="c">int SceDsiForDriver_6F8029A1(int head);</source>
 
Returns <code>((*(u32 *)([[DSI_Registers#Registers|SceDsiReg]] + 0x4C) >> 16) & 0x1FFF) - 1</code>.
 
=== ksceDsiSendBlankingPacket ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 468: Line 481:
|}
|}


<source lang="c">int SceDsiForDriver_7640F607_disable_bus2(int bus);</source>
<source lang="c">int ksceDsiSendBlankingPacket(int head);</source>


=== SceDsiForDriver_78E6E3CF ===
=== ksceDsiSetLanesAndPixelSize ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 478: Line 491:
|}
|}


<source lang="c">int SceDsiForDriver_78E6E3CF_set_lanes_pixel_size(int bus, int lanes, int pixel_size);</source>
<source lang="c">int ksceDsiSetLanesAndPixelSize(int head, int lanes, int pixelsize);</source>
 
For <code>head</code> == 0 (OLED/LCD), <code>lanes</code> must be 2 and <code>pixelsize</code> 24.
 
For <code>head</code> == 1 (HDMI), <code>lanes</code> can be 2 or 3 and <code>pixelsize</code> can be 24 or 30.
 
=== SceDsiForDriver_8610B795 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0x8610B795
|}


For <code>bus</code> == 0 (OLED/LCD), <code>lanes</code> must be 2 and <code>pixel_size</code> 24.
<source lang="c">int SceDsiForDriver_8610B795(int head, int mul, int div);</source>


For <code>bus</code> == 1 (HDMI), <code>lanes</code> can be 2 or 3 and <code>pixel_size</code> can be 24 or 30.
Sets internal struct member <code>struct[head].unk1C = mul * struct[head].unk18 / div</code>.


=== SceDsiForDriver_89C00D2F ===
=== ksceDsiGenericShortWrite ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 492: Line 517:
|}
|}


<source lang="c">int SceDsiForDriver_89C00D2F_generic_short_write(int bus, int param0, int param1, int param2);</source>
<source lang="c">int int ksceDsiGenericShortWrite(int head, int param0, int param1, int param2);</source>


Performs a MIPI DSI Generic Short Write, no parameters (0x03), MIPI DSI Generic Short Write, 1 parameter (0x13) or MIPI DSI Generic Short Write, 2 parameters (0x23) depending on the whether <code>param<sub>i</sub></code> is negative or not (bit 31 set).
Performs a MIPI DSI Generic Short Write, no parameters (0x03), MIPI DSI Generic Short Write, 1 parameter (0x13) or MIPI DSI Generic Short Write, 2 parameters (0x23) depending on the whether <code>param<sub>i</sub></code> is negative or not (bit 31 set).


=== SceDsiForDriver_97BFEA76 ===
=== ksceDsiSetVic ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 504: Line 529:
|}
|}


<source lang="c">int SceDsiForDriver_97BFEA76_set_timing(int bus, int value);</source>
<source lang="c">int ksceDsiSetVic(int head, int vic);</source>


=== SceDsiForDriver_98120684 ===
=== ksceDsiGenericReadRequest ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 514: Line 539:
|}
|}


<source lang="c">int SceDsiForDriver_98120684_dsi_generic_read_request(int bus, int param, void *buffer, unsigned int size);</source>
<source lang="c">int ksceDsiGenericReadRequest(int head, int param, void *buff, unsigned int size);</source>


Performs a MIPI DSI Generic Read Request, no parameters (0x04), or MIPI DSI Generic Read Request, 1 parameter (0x14) depending on the whether <code>param</code> is negative or not (bit 31 set).
Performs a MIPI DSI Generic Read Request, no parameters (0x04), or MIPI DSI Generic Read Request, 1 parameter (0x14) depending on the whether <code>param</code> is negative or not (bit 31 set).


=== SceDsiForDriver_B3A70C05 ===
=== ksceDsiGetVicResolution ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 526: Line 551:
|}
|}


<source lang="c">int SceDsiForDriver_B3A70C05_get_dimensions(int unk, int *width, int *height);</source>
<source lang="c">int ksceDsiGetVicResolution(int vic, int *width, int *height);</source>


=== SceDsiForDriver_BA6BC89F ===
=== ksceDsiDcsShortWrite ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 536: Line 561:
|}
|}


<source lang="c">int SceDsiForDriver_BA6BC89F_dcs_short_write(int bus, unsigned short cmd, int data);</source>
<source lang="c">int ksceDsiDcsShortWrite(int head, unsigned short param0, int param1);</source>
 
If <code>param1</code> is negative (bit 31 set), MIPI DSI DCS Short Write, no parameters (0x05) is performed. MIPI DSI DCS Short Write, 1 parameter (0x15) is performed otherwise.
 
=== SceDsiForDriver_C2E85919 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0xC2E85919
|}
 
<source lang="c">int SceDsiForDriver_C2E85919(int head, unsigned int control);</source>
 
=== SceDsiForDriver_F2921E29 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 3.60 || 0xF2921E29
|}


If <code>data</code> is negative (bit 31 set), MIPI DSI DCS Short Write, no parameters (0x05) is performed. MIPI DSI DCS Short Write, 1 parameter (0x15) is performed otherwise.
<source lang="c">int SceDsiForDriver_F2921E29(int head, unsigned int unk);</source>


== SceIftuForDriver ==
== SceIftuForDriver ==

Revision as of 22:17, 14 February 2018

Module

Known NIDs

Version Name World Privilege NID
1.69 SceLowio Non-secure Kernel 0x19E0E42F

Libraries

Known NIDs

Version Name World Visibility NID
1.69 ScePervasiveForDriver Non-secure Kernel 0xE692C727
1.69 SceGpioForDriver Non-secure Kernel 0xF0EF5743
1.69 ScePwmForDriver Non-secure Kernel 0xECEAE2D0
1.69 SceI2cForDriver Non-secure Kernel 0xE14BEF6E
1.69 SceGrabForDriver Non-secure Kernel 0x81C54BED
1.69 SceCdramForDriver Non-secure Kernel 0xC8CD941E
1.69 SceDsiForDriver Non-secure Kernel 0xEC897883
1.69 SceIftuForDriver Non-secure Kernel 0xCAFCFE50
1.69 SceCsiForDriver Non-secure Kernel 0xD85C8E44

ScePervasiveForDriver

ScePervasiveForDriver_18DD8043

Version NID
3.60 0x18DD8043

Turns off the clock (&= ~mask) of the device (UART) at offset 0x120 + 4 * device with mask = 1.

int ScePervasiveForDriver_18DD8043(int uart_bus);

ScePervasiveForDriver_243D0E78

Version NID
3.60 0x243D0E78
int ScePervasiveForDriver_243D0E78_get_dsi_clock_info(int pixelclock, int info0[2], int info1[2]);

ScePervasiveForDriver_25AE181E

Version NID
3.60 0x25AE181E
int ScePervasiveForDriver_25AE181E_dsi_clock_disable(int bus, int value);

ScePervasiveForDriver_2F195C97

Version NID
3.60 0x2F195C97

Turns on the clock (|= mask) of the device (GPIO) at offset 0x100 with mask = 1.

int ScePervasiveForDriver_2F195C97(void);

scePervasiveRemovableMemoryGetCardInsertStateForDriver

Version NID
3.60 0x551EEE82
int scePervasiveRemovableMemoryGetCardInsertStateForDriver(void);

ScePervasiveForDriver_64ABE589

Version NID
3.60 0x64ABE589
int ScePervasiveForDriver_64ABE589_msif_clock(int clock);

ScePervasiveForDriver_731A097D

Version NID
3.60 0x731A097D

Puts the device (GPIO) at offset 0x100 in reset (|= mask) with mask = 1.

int ScePervasiveForDriver_731A097D(void);

ScePervasiveForDriver_788B6C61

Version NID
3.60 0x788B6C61

Puts the device (UART) at offset 0x120 + 4 * device in reset (|= mask) with mask = 1.

int ScePervasiveForDriver_788B6C61(int uart_bus);

ScePervasiveForDriver_78C34032

Version NID
3.60 0x78C34032

Puts the device at offset 0x100 (GPIO) out of reset (&= ~mask) with mask = 1.

int ScePervasiveForDriver_78C34032(void);

ScePervasiveForDriver_7B16F900

Version NID
3.60 0x7B16F900

Puts the device (SPI) at offset 0x104 + 4 * device in reset (|= mask) with mask = 1.

int ScePervasiveForDriver_7B16F900(int device);

ScePervasiveForDriver_81A155F1

Version NID
3.60 0x81A155F1

Returns the SceLowio's mapped ScePervasiveMisc virtual address.

void *ScePervasiveForDriver_81A155F1(void);

ScePervasiveForDriver_8BAB45F8

Version NID
3.60 0x8BAB45F8

Changes UART baudrate. (There are 7 UART devices). Check SceUartClkgenReg. for more info.

int ScePervasiveForDriver_8BAB45F8(int uart_device, int baudrate);

ScePervasiveForDriver_91C80C41

Version NID
3.60 0x91C80C41
int ScePervasiveForDriver_91C80C41_set_dsi_bus_pixelclock(int bus, int pixelclock);

ScePervasiveForDriver_8A85E36B

Version NID
3.60 0x8A85E36B

Puts the device at offset 0x10 (? GpuEs4 related (Secure)) out of reset (&= ~mask) with mask = 1.

int ScePervasiveForDriver_8A85E36B(void);

ScePervasiveForDriver_A7CE7DCC

Version NID
3.60 0xA7CE7DCC

Puts the device (UART) at offset 0x120 + 4 * device out of reset (&= ~mask) with mask = 1.

int ScePervasiveForDriver_A7CE7DCC(int uart_bus);

ScePervasiveForDriver_A7E64C6F

Version NID
3.60 0xA7E64C6F

Puts the device at offset 0x30 (Venezia) out of reset (&= ~mask) with mask = 1.

int ScePervasiveForDriver_A7E64C6F(void);

ScePervasiveForDriver_A85BF98A

Version NID
3.60 0xA85BF98A

Turns off the clock (&= ~mask) of the device (SPI) at offset 0x120 + 4 * device with mask = 1.

int ScePervasiveForDriver_A85BF98A(int device);

ScePervasiveForDriver_BC42C72F

Version NID
3.60 0xBC42C72F
int ScePervasiveForDriver_BC42C72F_dsi_clock_enable(int bus, int value);

ScePervasiveForDriver_DFD96BFC

Version NID
3.60 0xDFD96BFC

Turns on the clock (|= mask) of the device (SPI) at offset 0x104 + 4 * device with mask = 1.

int ScePervasiveForDriver_DFD96BFC(int device);

ScePervasiveForDriver_E3FC1C8D

Version NID
3.60 0xE3FC1C8D
int ScePervasiveForDriver_E3FC1C8D_dsi_reset_enter(int bus, int value);

ScePervasiveForDriver_E4B145AE

Version NID
3.60 0xE4B145AE

Puts the device (SPI) at offset 0x104 + 4 * device out of reset (&= ~mask) with mask = 1.

int ScePervasiveForDriver_E4B145AE(int device);

ScePervasiveForDriver_EB176898

Version NID
3.60 0xEB176898

Turns off the clock (&= ~mask) of the device (GPIO) at offset 0x100 with mask = 1.

int ScePervasiveForDriver_EB176898(void);

ScePervasiveForDriver_EFD084D8

Version NID
3.60 0xEFD084D8

Turns on the clock (|= mask) of the device (UART) at offset 0x120 + 4 * device with mask = 1.

int ScePervasiveForDriver_EFD084D8(int uart_bus);

ScePervasiveForDriver_FFB43AC2

Version NID
3.60 0xFFB43AC2
int ScePervasiveForDriver_FFB43AC2_dsi_reset_exit(int bus, int value);

SceGpioForDriver

If bus is 0, the SceGpio0Reg registers are used, and if bus is 1, the SceGpio1Reg registers are used.

ksceGpioQueryIntr

Version NID
3.60 0x010DC295
int ksceGpioQueryIntr(int bus, int port);

ksceGpioSetPortMode

Version NID
3.60 0x372022A4
int ksceGpioSetPortMode(int bus, int port, int mode);

ksceGpioSetIntrMode

Version NID
3.60 0xBBEA1DDC
int ksceGpioSetIntrMode(int bus, int intr, int mode);

ksceGpioPortSet

Version NID
3.60 0xD454A584
int ksceGpioPortSet(int bus, int port);

ksceGpioPortClear

Version NID
3.60 0xF6310435
int ksceGpioPortClear(int bus, int port);

ksceGpioAcquireIntr

Version NID
3.60 0x35AAD77A
int ksceGpioAcquireIntr(int bus, int intr);

ScePwmForDriver

SceI2cForDriver

Types

typedef struct SceI2cDebugHandlers {
	unsigned int size;
	void (*write_start)(int bus, int device, unsigned char *buffer, int size);
	void (*write_error)(int bus, int error, int result);
	void (*read_start)(int bus, int device, unsigned char *buffer, int size);
	void (*read_error)(int bus, int error, int result);
	void (*write_read_start)(int bus, int write_device, unsigned char *write_buffer, int write_size);
	void (*write_read_error)(int bus, int error, int result);
} SceI2cDebugHandlers;
Version NID Name
3.60 0x0A40B7BF int sceI2cTransferWriteRead(int bus, unsigned int write_dev_id, const void *write_buffer, int write_size, unsigned int read_dev_id, void *read_buffer, int read_size);
3.60 0x30CF9469
3.60 0x76D277AB sceI2cReset(int bus);
3.60 0x9CF8F3D6 sceI2cInit(int bus);
3.60 0xA2C7CE62 int sceI2cSetDebugHandlers(int bus, SceI2cDebugHandlers *debug_handlers)
3.60 0xCA94A759 int sceI2cTransferWrite(int bus, unsigned int device_address, const void *buffer, unsigned int size);
3.60 0xD1D0A9A4 int sceI2cTransferRead(int bus, unsigned int device_address, void *buffer, unsigned int size);
3.60 0xE449AC6E

SceGrabForDriver

SceCdramForDriver

SceDsiForDriver

ksceDsiDisableHead

Version NID
3.60 0x114D1413
int ksceDsiDisableHead(int head);

ksceDsiDcsRead

Version NID
3.60 0x3FB0DF1F
int ksceDsiDcsRead(int head, unsigned short param, void *buff, unsigned int size);

MIPI DSI DCS Read (0x06)

ksceDsiGetPixelClock

Version NID
3.60 0x4DF9E924
int ksceDsiGetPixelClock(int head);

ksceDsiEnableHead

Version NID
3.60 0x5BE5AA9B
int ksceDsiEnableHead(int head);

SceDsiForDriver_6F8029A1

Version NID
3.60 0x6F8029A1
int SceDsiForDriver_6F8029A1(int head);

Returns ((*(u32 *)(SceDsiReg + 0x4C) >> 16) & 0x1FFF) - 1.

ksceDsiSendBlankingPacket

Version NID
3.60 0x7640F607
int ksceDsiSendBlankingPacket(int head);

ksceDsiSetLanesAndPixelSize

Version NID
3.60 0x78E6E3CF
int ksceDsiSetLanesAndPixelSize(int head, int lanes, int pixelsize);

For head == 0 (OLED/LCD), lanes must be 2 and pixelsize 24.

For head == 1 (HDMI), lanes can be 2 or 3 and pixelsize can be 24 or 30.

SceDsiForDriver_8610B795

Version NID
3.60 0x8610B795
int SceDsiForDriver_8610B795(int head, int mul, int div);

Sets internal struct member struct[head].unk1C = mul * struct[head].unk18 / div.

ksceDsiGenericShortWrite

Version NID
3.60 0x89C00D2F
int int ksceDsiGenericShortWrite(int head, int param0, int param1, int param2);

Performs a MIPI DSI Generic Short Write, no parameters (0x03), MIPI DSI Generic Short Write, 1 parameter (0x13) or MIPI DSI Generic Short Write, 2 parameters (0x23) depending on the whether parami is negative or not (bit 31 set).

ksceDsiSetVic

Version NID
3.60 0x97BFEA76
int ksceDsiSetVic(int head, int vic);

ksceDsiGenericReadRequest

Version NID
3.60 0x98120684
int ksceDsiGenericReadRequest(int head, int param, void *buff, unsigned int size);

Performs a MIPI DSI Generic Read Request, no parameters (0x04), or MIPI DSI Generic Read Request, 1 parameter (0x14) depending on the whether param is negative or not (bit 31 set).

ksceDsiGetVicResolution

Version NID
3.60 0xB3A70C05
int ksceDsiGetVicResolution(int vic, int *width, int *height);

ksceDsiDcsShortWrite

Version NID
3.60 0xBA6BC89F
int ksceDsiDcsShortWrite(int head, unsigned short param0, int param1);

If param1 is negative (bit 31 set), MIPI DSI DCS Short Write, no parameters (0x05) is performed. MIPI DSI DCS Short Write, 1 parameter (0x15) is performed otherwise.

SceDsiForDriver_C2E85919

Version NID
3.60 0xC2E85919
int SceDsiForDriver_C2E85919(int head, unsigned int control);

SceDsiForDriver_F2921E29

Version NID
3.60 0xF2921E29
int SceDsiForDriver_F2921E29(int head, unsigned int unk);

SceIftuForDriver

typedef struct SceIftuFbInfo {
	unsigned int pixelformat;
	unsigned int width;
	unsigned int height;
	unsigned int leftover_stride;
	unsigned int unk10; // always 0
	unsigned int paddr;
	unsigned int unk18; // always 0
	unsigned int unk1C; // always 0
	unsigned int unk20; // always 0
	unsigned int src_x; // in (0x10000 / 960) multiples
	unsigned int src_y; // in (0x10000 / 544) multiples
	unsigned int src_w; // in (0x10000 / 960) multiples
	unsigned int src_h; // in (0x10000 / 544) multiples
	unsigned int dst_x;
	unsigned int dst_y;
	unsigned int dst_w;
	unsigned int dst_h;
	unsigned int vfront_porch;
	unsigned int vback_porch;
	unsigned int hfront_porch;
	unsigned int hback_porch;
} SceIftuFbInfo; /* size = 0x54 */

typedef struct SceIftuConvParams {
	unsigned int size;
	unsigned int unk04;
	SceIftuCscParams *csc_params1;
	SceIftuCscParams *csc_params2;
	unsigned int unk10;
	unsigned int unk14;
	unsigned int unk18;
	unsigned int unk1C;
	unsigned int alpha;
	unsigned int unk24;
} SceIftuConvParams; /* size = 0x28 */

typedef struct SceIftuCscParams {
	unsigned int unk00;
	unsigned int unk04;
	unsigned int unk08;
	unsigned int unk0C;
	unsigned int unk10;
	unsigned int unk14;
	unsigned int csc_rr;
	unsigned int csc_rg;
	unsigned int csc_rb;
	unsigned int csc_gr;
	unsigned int csc_gg;
	unsigned int csc_gb;
	unsigned int csc_br;
	unsigned int csc_bg;
	unsigned int csc_bb;
} SceIftuCscParams; /* size = 0x3C */

SceIftuForDriver_0D7C02F7

Version NID
3.60 0x0D7C02F7
int SceIftuForDriver_0D7C02F7_plane_enable(unsigned int plane);

SceIftuForDriver_0FCBF457

Version NID
3.60 0x0FCBF457

Set plane CSC (Color Space Conversion) information.

int SceIftuForDriver_0FCBF457_set_plane_csc2(unsigned int plane, SceIftuCscParams *param);

SceIftuForDriver_357EAE24

Version NID
3.60 0x357EAE24

Sets plane alpha value. Only planes 1 and 3 support alpha blending. Supported alpha values are 0-0x100 where 0x100 is no transparency (alpha blending disable).

int SceIftuForDriver_357EAE24_set_plane_alpha(unsigned int plane, int alpha);

SceIftuForDriver_7CE0C4DA

Version NID
3.60 0x7CE0C4DA

Setups a plane or fb?

int SceIftuForDriver_7CE0C4DA(unsigned int index, SceIftuFbInfo *plane_info, int flags, int sync);

SceIftuForDriver_67E37EFC

Version NID
3.60 0x67E37EFC

Performs colorspace conversion (by using SceIftu2Reg).

int SceIftuForDriver_67E37EFC_perform_csc(SceIftuFbInfo *fbinfo_dst, SceIftuFbInfo *fbinfo_src, SceIftuConvParams *conv_params);

SceIftuForDriver_AF19FD85

Version NID
3.60 0xAF19FD85
int SceIftuForDriver_AF19FD85_set_global_blending_control(unsigned int plane, int control);

SceIftuForDriver_C11F30B3

Version NID
3.60 0xC11F30B3
int SceIftuForDriver_C11F30B3_plane_disable(unsigned int plane);

SceIftuForDriver_D64F4C6B

Version NID
3.60 0xD64F4C6B

Set plane CSC (Color Space Conversion) information.

int SceIftuForDriver_D64F4C6B_set_plane_csc(unsigned int plane, SceIftuCscParams *param);

SceIftuForDriver_E6EE2C6B

Version NID
3.60 0xE6EE2C6B

Set plane SRC_WIDTH and SRC_HEIGHT values (in fixed point 16.16).

int SceIftuForDriver_E6EE2C6B_set_plane_size(unsigned int plane, int src_width_hi, unsigned int src_height_hi, int src_width_lo, int src_height_lo);

SceCsiForDriver