SceLowio

From Vita Development Wiki
Revision as of 23:38, 9 April 2020 by CelesteBlue (talk | contribs)
Jump to navigation Jump to search

Module

Known NIDs

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

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

?get_kermit_revision?

Version NID
0.940-3.60 0x714EEFB7

Returns <= 0 if Kermit revision is below 2.0. To check???

int get_kermit_revision(void);

scePervasiveCecClockOutEnableForDriver

Version NID
0.940-3.60 0x26B51075

scePervasiveCecClockOutDisableForDriver

Version NID
0.940-3.60 0xD185D235

scePervasiveCameraBusClockSelectForDriver

Version NID
0.940-3.60 0x589D0291
// bus_clock can be either 2 (DOWN) or 5 (UP)
int scePervasiveCameraBusClockSelectForDriver(int bus_clock);

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

scePervasiveIftuDsiClkGateDisableForDriver

Version NID
0.940-3.60 0x25AE181E

Temp name was ScePervasiveForDriver_25AE181E_dsi_clock_disable.

int scePervasiveIftuDsiClkGateDisableForDriver(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);

scePervasiveIftuDsiClkGateEnableForDriver

Version NID
0.940-3.60 0xBC42C72F

Temp name was scePervasiveDsiClockEnableForDriver.

int scePervasiveIftuDsiClkGateEnableForDriver(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);

scePervasiveIftuDsiResetEnableForDriver

Version NID
0.940-3.60 0xE3FC1C8D

Temp name was ScePervasiveForDriver_E3FC1C8D_dsi_reset_enter.

int scePervasiveIftuDsiResetEnableForDriver(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_1068C067

Version NID
0.940-3.60 0x1068C067
int ScePervasiveForDriver_1068C067(SceDisplayHead head);

scePervasiveIftuDsiResetDisableForDriver

Version NID
0.940-3.60 0xFFB43AC2

Temp name was scePervasiveDsiResetDisableForDriver.

int scePervasiveIftuDsiResetDisableForDriver(int bus, int value);

SceGpioForDriver

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

sceGpioQueryIntrForDriver

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

sceGpioSetPortModeForDriver

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

sceGpioSetIntrModeForDriver

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

sceGpioPortSetForDriver

Version NID
0.990-3.60 0xD454A584
int sceGpioPortSetForDriver(int bus, int port);

sceGpioPortClearForDriver

Version NID
0.990-3.60 0xF6310435
int sceGpioPortClearForDriver(int bus, int port);

sceGpioAcquireIntrForDriver

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

ScePwmForDriver

         ScePwmForDriver_0374213C: 0x0374213C
         ScePwmForDriver_13161CCC: 0x13161CCC
         ScePwmForDriver_22C17D24: 0x22C17D24
         ScePwmForDriver_514773B1: 0x514773B1
         ScePwmForDriver_99911920: 0x99911920

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

         SceGrabForDriver_072B8D93: 0x072B8D93
         SceGrabForDriver_188BBCC8: 0x188BBCC8
         SceGrabForDriver_1F292554: 0x1F292554
         SceGrabForDriver_379130B2: 0x379130B2
         SceGrabForDriver_5F36ABC4: 0x5F36ABC4
         SceGrabForDriver_B22EE8BC: 0xB22EE8BC
         SceGrabForDriver_E9C25A28: 0xE9C25A28
         SceGrabForDriver_F13C63DD: 0xF13C63DD

SceCdramForDriver

SceCdramForDriver_41D821F3

Version NID
0.940 0x41D821F3
3.60 not present

Calls SMC 0x119.

SceCdramForDriver_BA81E0E3

Version NID
0.940 0xBA81E0E3
3.60 not present

Calls SMC 0x118.

SceCdramForDriver_0657FC1B

Version NID
0.940 not present
3.60 0x0657FC1B

SceCdramForDriver_2D728EBF

Version NID
0.940 not present
3.60 0x2D728EBF

SceCdramForDriver_3EFA7540

Version NID
0.940 not present
3.60 0x3EFA7540

SceDsiForDriver

sceDsiStopMasterForDriver

Version NID
0.940-3.60 0x114D1413

Temp name was sceDsiDisableHeadForDriver.

int sceDsiStopMasterForDriver(SceDisplayHead head);

sceDsiDcsReadForDriver

Version NID
3.60 0x3FB0DF1F
int sceDsiDcsReadForDriver(SceDisplayHead head, unsigned short param, void *buf, SceSize size);

MIPI DSI DCS Read (0x06)

sceDsiGetPixelClockForDriver

Version NID
3.60 0x4DF9E924
int sceDsiGetPixelClockForDriver(SceDisplayHead head);

sceDsiStartMasterForDriver

Version NID
0.940-3.60 0x5BE5AA9B

Temp name was sceDsiEnableHeadForDriver.

int sceDsiStartMasterForDriver(SceDisplayHead head);

SceDsiForDriver_6F8029A1

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

Returns the current Vcount, read from ((*(u32 *)(SceDsiReg + 0x4C) >> 16) & 0x1FFF) - 1.

sceDsiStopDisplayForDriver

Version NID
0.940-3.60 0x7640F607
int sceDsiStopDisplayForDriver(SceDisplayHead head);

sceDsiSetDisplayModeForDriver

Version NID
3.60 0x78E6E3CF

Temp name was sceDsiSetLanesAndPixelSizeForDriver.

For head == SCE_DISPLAY_HEAD_MAIN_LCD_OLED, lanes must be 2 and pixelsize 24.

For head == SCE_DISPLAY_HEAD_HDMI, lanes can be 2 or 3 and pixelsize can be 24 or 30.

int sceDsiSetDisplayModeForDriver(SceDisplayHead head, int lanes, int pixelsize);

SceDsiForDriver_8610B795

Version NID
3.60 0x8610B795

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

int SceDsiForDriver_8610B795(SceDisplayHead head, int mul, int div);

sceDsiGenericShortWriteForDriver

Version NID
3.60 0x89C00D2F

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

int int sceDsiGenericShortWriteForDriver(SceDisplayHead head, int param0, int param1, int param2);

sceDsiSetScreenModeForDriver

Version NID
3.60 0x97BFEA76

Temp name was sceDsiSetVicForDriver.

int sceDsiSetScreenModeForDriver(SceDisplayHead head, SceDisplayScreenMode screenMode);

sceDsiGenericReadRequestForDriver

Version NID
3.60 0x98120684

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

int sceDsiGenericReadRequestForDriver(SceDisplayHead head, int param, void *buff, SceSize size);

sceDsiDcsShortWriteForDriver

Version NID
3.60 0xBA6BC89F

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.

int sceDsiDcsShortWriteForDriver(SceDisplayHead head, SceUInt16 param0, SceUInt32 param1);

sceDsiStartDisplayForDriver

Version NID
0.940-3.60 0xC2E85919
int sceDsiStartDisplayForDriver(SceDisplayHead head, SceUInt32 control);

SceDsiForDriver_F2921E29

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

sceDsiQeuryResolutionSizeForDriver

Version NID
0.940 0xFA9E2DC5
3.60 sceDsiQueryResolutionSizeForDriver

The typo in the function name was fixed since an unknown FW, and so the NID was updated.

For progressive modes, H_total = H_active + HFP + HSW + HBP. For interlaced modes, H_total = H_active + 2 * (HFP + HSW + HBP) - 1.

int sceDsiQeuryResolutionSizeForDriver(SceDisplayScreenMode screenMode, int *width, int *height);

sceDsiQueryResolutionSizeForDriver

Version NID
0.940 sceDsiQeuryResolutionSizeForDriver
3.60 0xB3A70C05

Temp name was sceDsiGetVicResolutionForDriver.

For progressive modes, H_total = H_active + HFP + HSW + HBP. For interlaced modes, H_total = H_active + 2 * (HFP + HSW + HBP) - 1.

int sceDsiQueryResolutionSizeForDriver(SceDisplayScreenMode screenMode, int *width, int *height);

SceIftuForDriver

typedef struct SceIftuFrameBuf {
	unsigned int pixelformat;
	unsigned int width; /* Aligned to 16 */
	unsigned int height; /* Aligned to 8 */
	unsigned int leftover_stride; /* (pitch - aligned_w) * bpp */
	unsigned int leftover_align; /* if YCbCr: (width >> 1) & 0xF [chroma align?] */
	unsigned int paddr0;
	unsigned int paddr1;
	unsigned int paddr2;
} SceIftuFrameBuf; /* size = 0x20 */

typedef struct SceIftuPlaneState {
	SceIftuFrameBuf fb;
	unsigned int unk20;               // not observed to be non-zero
	unsigned int unk24;               // not observed to be non-zero
	unsigned int unk28;               // not observed to be non-zero
	unsigned int src_w;               // inverse scaling factor in 16.16 fixed point
	unsigned int src_h;               // inverse scaling factor in 16.16 fixed point
	unsigned int dst_x;               // offset into the destination buffer
	unsigned int dst_y;               // offset into the destination buffer
	unsigned int src_x;               // offset into the source buffer in 4.4 fixed point
	unsigned int src_y;               // offset into the source buffer in 4.4 fixed point
	unsigned int crop_top;
	unsigned int crop_bot;
	unsigned int crop_left;
	unsigned int crop_right;
} SceIftuPlaneState; /* size = 0x54 */

typedef struct SceIftuCscParams {
	unsigned int post_add_0; /* 10-bit integer */
	unsigned int post_add_1_2; /* 10-bit integer */
	unsigned int post_clamp_max_0; /* 10-bit integer */
	unsigned int post_clamp_min_0; /* 10-bit integer */
	unsigned int post_clamp_max_1_2; /* 10-bit integer */
	unsigned int post_clamp_min_1_2; /* 10-bit integer */
	unsigned int ctm[3][3]; /* S3.9 fixed point format */
} SceIftuCscParams; /* size = 0x3C */

typedef struct SceIftuConvParams {
	unsigned int size;
	unsigned int unk04;
	SceIftuCscParams *csc_params1; // +0x08
	SceIftuCscParams *csc_params2; // +0x0C
	unsigned int csc_control; // +0x10
	unsigned int unk14;
	unsigned int unk18;
	unsigned int unk1C;
	unsigned int alpha;
	unsigned int unk24;
} SceIftuConvParams; /* size = 0x28 */

sceIftuEnableForDriver

Version NID
0.940-3.60 0x0D7C02F7

Temp name was SceIftuForDriver_0D7C02F7_plane_enable.

// plane must be between 0 and 3
int sceIftuEnableForDriver(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);

sceIftuSetInputFrameBufferForDriver

Version NID
0.940-3.60 0x7CE0C4DA

Set bilinear to 0 for nearest neighbour, set to 1 for bilinear filtering, set to -1 when plane_state is a zero struct.

int sceIftuSetInputFrameBufferForDriver(unsigned int plane_index, SceIftuPlaneState *plane_state, int bilinear, int sync);

sceIftuConvertForDriver

Version NID
0.940-3.60 0x67E37EFC

Temp name was sceIftuCscForDriver.

Performs colorspace conversion (by using SceIftu2Reg).

int sceIftuConvertForDriver(SceIftuFrameBuf *dst_fb, SceIftuPlaneState *src_plane_state, SceIftuConvParams *conv_params);

sceIftuSetMergeSettingForDriver

Version NID
0.940-3.60 0xAF19FD85

Temp name was SceIftuForDriver_AF19FD85_set_global_blending_control.

int sceIftuSetMergeSettingForDriver(unsigned int plane, int control);

sceIftuDisableForDriver

Version NID
0.940-3.60 0xC11F30B3

Temp name was SceIftuForDriver_C11F30B3_plane_disable.

int sceIftuDisableForDriver(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);

sceIftuSetOutputFormatForDriver

Version NID
0.940-3.60 0xE6EE2C6B

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

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

SceCsiForDriver

SceCsiForDriver_10545393

Version NID
0.940-3.60 0x10545393

Copies buf to memory.

// buf size is 0x2C
int SceCsiForDriver_10545393(SceDisplayHead head, void *buf);

SceCsiForDriver_2AFEA1B0

Version NID
0.940-3.60 0x2AFEA1B0
int SceCsiForDriver_2AFEA1B0(SceDisplayHead head, SceUInt a2);

SceCsiForDriver_4AE39F26

Version NID
0.940-3.60 0x4AE39F26

Maybe CSI stop.

int SceCsiForDriver_4AE39F26(SceDisplayHead head);

SceCsiForDriver_A1D1805D

Version NID
0.940-3.60 0xA1D1805D

Maybe CSI start.

int SceCsiForDriver_A1D1805D(SceDisplayHead head);

SceCsiForDriver_B508822B

Version NID
0.940-3.60 0xB508822B

Sets a2 and a3 in memory.

int SceCsiForDriver_B508822B(SceDisplayHead head, int a2, int a3);

SceCsiForDriver_FC165297

Version NID
0.940-3.60 0xFC165297

Sets a2 in memory.

int SceCsiForDriver_FC165297(SceDisplayHead head, int a2);