Difference between revisions of "SceLowio"

From Vita Development Wiki
Jump to navigation Jump to search
Line 59: Line 59:
 
|}
 
|}
  
Return address to a buffer related to Clock Frequencies and Syscon. Maybe this value is the clock multiplier/divider. See [[Pervasive#ARM_Clocks]].
+
Returns address to a buffer related to Clock Frequencies and Syscon. Maybe this value is the clock multiplier/divider. See [[Pervasive#ARM_Clocks]].
  
 
Used by [[ScePower]].
 
Used by [[ScePower]].
Line 72: Line 72:
 
| 3.60 || 0xE9D95643
 
| 3.60 || 0xE9D95643
 
|}
 
|}
 +
 +
This is a guessed name.
  
 
Used only by [[ScePower]].
 
Used only by [[ScePower]].
 
This is a guessed name.
 
  
 
<source lang="C">int scePervasiveArmSetClockForDriver(SceUInt32 freq_level1, SceUInt32 freq_level2);</source>
 
<source lang="C">int scePervasiveArmSetClockForDriver(SceUInt32 freq_level1, SceUInt32 freq_level2);</source>
Line 86: Line 86:
 
| 3.60 || 0x6AF0196F
 
| 3.60 || 0x6AF0196F
 
|}
 
|}
 +
 +
This is a guessed name.
  
 
Maybe called on each suspend/resume.
 
Maybe called on each suspend/resume.
 
This is a guessed name.
 
  
 
<source lang="C">
 
<source lang="C">
Line 119: Line 119:
  
 
<source lang="C">int scePervasiveVipSetClockForDriver(SceUInt32 freq_level);</source>
 
<source lang="C">int scePervasiveVipSetClockForDriver(SceUInt32 freq_level);</source>
 
=== scePervasiveCameraBusSetClockForDriver ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 3.60 || 0x589D0291
 
|}
 
 
This is a guessed name.
 
 
<source lang="C">int scePervasiveCameraBusSetClockForDriver(SceUInt32 freq_level);</source>
 
  
 
=== scePervasiveDmac5SetClockForDriver ===
 
=== scePervasiveDmac5SetClockForDriver ===
Line 209: Line 197:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.940-3.60 || 0x589D0291
+
| 0.931-3.60 || 0x589D0291
 
|}
 
|}
  
 
<source lang="C">
 
<source lang="C">
 
// bus_clock can be either 2 (DOWN) or 5 (UP)
 
// bus_clock can be either 2 (DOWN) or 5 (UP)
int scePervasiveCameraBusClockSelectForDriver(int bus_clock);
+
int scePervasiveCameraBusClockSelectForDriver(SceUInt32 bus_clock);
 
</source>
 
</source>
  
Line 227: Line 215:
 
Turns off the clock (&= ~mask) of the device (UART) at offset <code>0x120 + 4 * device</code> with mask = 1.
 
Turns off the clock (&= ~mask) of the device (UART) at offset <code>0x120 + 4 * device</code> with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_18DD8043(int uart_bus);</source>
+
<source lang="C">int ScePervasiveForDriver_18DD8043(int uart_bus);</source>
  
 
=== ScePervasiveForDriver_243D0E78 ===
 
=== ScePervasiveForDriver_243D0E78 ===
Line 237: Line 225:
 
|}
 
|}
  
<source lang="c">int ScePervasiveForDriver_243D0E78_get_dsi_clock_info(int pixelclock, int info0[2], int info1[2]);</source>
+
<source lang="C">int ScePervasiveForDriver_243D0E78_get_dsi_clock_info(int pixelclock, int info0[2], int info1[2]);</source>
 +
 
 +
=== scePervasiveIftuDsiResetEnableForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.940-3.60 || 0xE3FC1C8D
 +
|}
 +
 
 +
Temp name was ScePervasiveForDriver_E3FC1C8D_dsi_reset_enter, scePervasiveDsiResetEnableForDriver.
 +
 
 +
Device at offset <code>0x80</code>.
 +
 
 +
<source lang="C">int scePervasiveIftuDsiResetEnableForDriver(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== ScePervasiveForDriver_4AF7A01E ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x4AF7A01E
 +
|}
 +
 
 +
Same as scePervasiveIftuDsiResetEnableForDriver.
 +
 
 +
Device at offset <code>0x90 + bus * 4</code>.
 +
 
 +
<source lang="C">int ScePervasiveForDriver_4AF7A01E(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== scePervasiveIftuDsiResetDisableForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.940-3.60 || 0xFFB43AC2
 +
|}
 +
 
 +
Temp name was scePervasiveDsiResetDisableForDriver.
 +
 
 +
Device at offset <code>0x80</code>.
 +
 
 +
<source lang="C">int scePervasiveIftuDsiResetDisableForDriver(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== ScePervasiveForDriver_13CC07C9 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x13CC07C9
 +
|}
 +
 
 +
Same as scePervasiveIftuDsiResetDisableForDriver.
 +
 
 +
Device at offset <code>0x90 + bus * 4</code>.
 +
 
 +
<source lang="C">int ScePervasiveForDriver_13CC07C9(int bus, int mask_maybe_unused);</source>
  
 
=== scePervasiveIftuDsiClkGateDisableForDriver ===
 
=== scePervasiveIftuDsiClkGateDisableForDriver ===
Line 247: Line 291:
 
|}
 
|}
  
Temp name was ScePervasiveForDriver_25AE181E_dsi_clock_disable.
+
Temp name was ScePervasiveForDriver_25AE181E_dsi_clock_disable, scePervasiveDsiClockDisableForDriver.
 +
 
 +
Device at offset <code>0x80</code>.
 +
 
 +
<source lang="C">int scePervasiveIftuDsiClkGateDisableForDriver(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== ScePervasiveForDriver_CA0ACFC5 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xCA0ACFC5
 +
|}
 +
 
 +
Same as scePervasiveIftuDsiClkGateDisableForDriver.
 +
 
 +
Device at offset <code>0x10</code> (? GpuEs4 related (Secure)).
 +
 
 +
<source lang="C">int ScePervasiveForDriver_CA0ACFC5(int mask_maybe_unused);</source>
 +
 
 +
=== ScePervasiveForDriver_AD1E81EB ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xAD1E81EB
 +
|}
 +
 
 +
Same as scePervasiveIftuDsiClkGateDisableForDriver.
 +
 
 +
Device at offset <code>0x90 + bus * 4</code>.
 +
 
 +
<source lang="C">int ScePervasiveForDriver_AD1E81EB(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== scePervasiveVipClkGateDisable1ForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 1.69-3.60 || 0x2EEBE9AE
 +
|}
 +
 
 +
This is a guessed name.
 +
 
 +
Same as scePervasiveIftuDsiClkGateDisableForDriver.
 +
 
 +
Device at offset <code>0x30</code>. Mask 1.
 +
 
 +
Used to initialize [[Venezia]] registers or SPRAM.
 +
 
 +
<source lang="C">int scePervasiveVipClkGateDisable1ForDriver(void);</source>
 +
 
 +
=== scePervasiveVipClkGateDisable2ForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xFBE5AA2F
 +
|}
 +
 
 +
Same as scePervasiveIftuDsiClkGateDisableForDriver.
 +
 
 +
This is a guessed name.
 +
 
 +
Device at offset <code>0x30</code>. Mask 2.
  
<source lang="c">int scePervasiveIftuDsiClkGateDisableForDriver(int bus, int value);</source>
+
<source lang="C">int scePervasiveVipClkGateDisable2ForDriver(void);</source>
  
 
=== ScePervasiveForDriver_2F195C97 ===
 
=== ScePervasiveForDriver_2F195C97 ===
Line 261: Line 369:
 
Turns on the clock (|= mask) of the device (GPIO) at offset <code>0x100</code> with mask = 1.
 
Turns on the clock (|= mask) of the device (GPIO) at offset <code>0x100</code> with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_2F195C97(void);</source>
+
<source lang="C">int ScePervasiveForDriver_2F195C97(void);</source>
  
 
=== scePervasiveRemovableMemoryGetCardInsertStateForDriver ===
 
=== scePervasiveRemovableMemoryGetCardInsertStateForDriver ===
Line 271: Line 379:
 
|}
 
|}
  
<source lang="c">int scePervasiveRemovableMemoryGetCardInsertStateForDriver(void);</source>
+
<source lang="C">int scePervasiveRemovableMemoryGetCardInsertStateForDriver(void);</source>
  
 
=== ScePervasiveForDriver_64ABE589 ===
 
=== ScePervasiveForDriver_64ABE589 ===
Line 281: Line 389:
 
|}
 
|}
  
<source lang="c">int ScePervasiveForDriver_64ABE589_msif_clock(int clock);</source>
+
<source lang="C">int ScePervasiveForDriver_64ABE589_msif_clock(int clock);</source>
  
 
=== ScePervasiveForDriver_731A097D ===
 
=== ScePervasiveForDriver_731A097D ===
Line 290: Line 398:
 
| 3.60 || 0x731A097D
 
| 3.60 || 0x731A097D
 
|}
 
|}
 +
 +
Temp name was scePervasiveGpioResetEnableForDriver.
  
 
Puts the device (GPIO) at offset <code>0x100</code> in reset (|= mask) with mask = 1.
 
Puts the device (GPIO) at offset <code>0x100</code> in reset (|= mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_731A097D(void);</source>
+
<source lang="C">int ScePervasiveForDriver_731A097D(void);</source>
  
 
=== ScePervasiveForDriver_788B6C61 ===
 
=== ScePervasiveForDriver_788B6C61 ===
Line 305: Line 415:
 
Puts the device (UART) at offset <code>0x120 + 4 * device</code> in reset (|= mask) with mask = 1.
 
Puts the device (UART) at offset <code>0x120 + 4 * device</code> in reset (|= mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_788B6C61(int uart_bus);</source>
+
<source lang="C">int ScePervasiveForDriver_788B6C61(int uart_bus);</source>
  
 
=== ScePervasiveForDriver_78C34032 ===
 
=== ScePervasiveForDriver_78C34032 ===
Line 317: Line 427:
 
Puts the device at offset <code>0x100</code> (GPIO) out of reset (&= ~mask) with mask = 1.
 
Puts the device at offset <code>0x100</code> (GPIO) out of reset (&= ~mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_78C34032(void);</source>
+
<source lang="C">int ScePervasiveForDriver_78C34032(void);</source>
  
 
=== ScePervasiveForDriver_7B16F900 ===
 
=== ScePervasiveForDriver_7B16F900 ===
Line 329: Line 439:
 
Puts the device (SPI) at offset <code>0x104 + 4 * device</code> in reset (|= mask) with mask = 1.
 
Puts the device (SPI) at offset <code>0x104 + 4 * device</code> in reset (|= mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_7B16F900(int device);</source>
+
<source lang="C">int ScePervasiveForDriver_7B16F900(int device);</source>
  
 
=== ScePervasiveForDriver_81A155F1 ===
 
=== ScePervasiveForDriver_81A155F1 ===
Line 341: Line 451:
 
Returns the SceLowio's mapped ScePervasiveMisc virtual address.
 
Returns the SceLowio's mapped ScePervasiveMisc virtual address.
  
<source lang="c">void *ScePervasiveForDriver_81A155F1(void);</source>
+
<source lang="C">void *ScePervasiveForDriver_81A155F1(void);</source>
  
 
=== ScePervasiveForDriver_8BAB45F8 ===
 
=== ScePervasiveForDriver_8BAB45F8 ===
Line 351: Line 461:
 
|}
 
|}
  
Changes UART baudrate. (There are 7 UART devices). Check [[UART_Registers#SceUartClkgenReg|SceUartClkgenReg]]. for more info.
+
Changes UART baudrate of one of the 7 UART devices. See [[UART_Registers#SceUartClkgenReg|SceUartClkgenReg]] for more info.
  
<source lang="c">int ScePervasiveForDriver_8BAB45F8(int uart_device, int baudrate);</source>
+
<source lang="C">int ScePervasiveForDriver_8BAB45F8(int uart_device, int baudrate);</source>
  
 
=== ScePervasiveForDriver_91C80C41 ===
 
=== ScePervasiveForDriver_91C80C41 ===
Line 363: Line 473:
 
|}
 
|}
  
<source lang="c">int ScePervasiveForDriver_91C80C41_set_dsi_bus_pixelclock(int bus, int pixelclock);</source>
+
<source lang="C">int ScePervasiveForDriver_91C80C41_set_dsi_bus_pixelclock(int bus, int pixelclock);</source>
  
 
=== ScePervasiveForDriver_8A85E36B ===
 
=== ScePervasiveForDriver_8A85E36B ===
Line 375: Line 485:
 
Puts the device at offset <code>0x10</code> (? GpuEs4 related (Secure)) out of reset (&= ~mask) with mask = 1.
 
Puts the device at offset <code>0x10</code> (? GpuEs4 related (Secure)) out of reset (&= ~mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_8A85E36B(void);</source>
+
<source lang="C">int ScePervasiveForDriver_8A85E36B(void);</source>
  
 
=== ScePervasiveForDriver_A7CE7DCC ===
 
=== ScePervasiveForDriver_A7CE7DCC ===
Line 384: Line 494:
 
| 3.60 || 0xA7CE7DCC
 
| 3.60 || 0xA7CE7DCC
 
|}
 
|}
 +
 +
Temp name was scePervasiveUartResetDisableForDriver.
  
 
Puts the device (UART) at offset <code>0x120 + 4 * device</code> out of reset (&= ~mask) with mask = 1.
 
Puts the device (UART) at offset <code>0x120 + 4 * device</code> out of reset (&= ~mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_A7CE7DCC(int uart_bus);</source>
+
<source lang="C">int ScePervasiveForDriver_A7CE7DCC(int uart_bus);</source>
  
 
=== ScePervasiveForDriver_A7E64C6F ===
 
=== ScePervasiveForDriver_A7E64C6F ===
Line 394: Line 506:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xA7E64C6F
+
| 1.69-3.60 || 0xA7E64C6F
 
|}
 
|}
  
Puts the device at offset <code>0x30</code> (Venezia) out of reset (&= ~mask) with mask = 1.
+
Puts the device at offset <code>0x30</code> ([[Venezia]] Vip) out of reset (&= ~mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_A7E64C6F(void);</source>
+
Used to reset [[Venezia]].
 +
 
 +
<source lang="C">int ScePervasiveForDriver_A7E64C6F(void);</source>
  
 
=== ScePervasiveForDriver_A85BF98A ===
 
=== ScePervasiveForDriver_A85BF98A ===
Line 409: Line 523:
 
|}
 
|}
  
Turns off the clock (&= ~mask) of the device (SPI) at offset <code>0x120 + 4 * device</code> with mask = 1.
+
Temp name was scePervasiveSpiClockDisableForDriver.
  
<source lang="c">int ScePervasiveForDriver_A85BF98A(int device);</source>
+
Turns off the clock (&= ~mask) of the device (SPI) at offset <code>0x104 + 4 * device</code> with mask = 1.
 +
 
 +
<source lang="C">int ScePervasiveForDriver_A85BF98A(int device);</source>
  
 
=== scePervasiveIftuDsiClkGateEnableForDriver ===
 
=== scePervasiveIftuDsiClkGateEnableForDriver ===
Line 423: Line 539:
 
Temp name was scePervasiveDsiClockEnableForDriver.
 
Temp name was scePervasiveDsiClockEnableForDriver.
  
<source lang="c">int scePervasiveIftuDsiClkGateEnableForDriver(int bus, int value);</source>
+
Device at offset <code>0x80 + bus*4</code>
 +
 
 +
<source lang="C">int scePervasiveIftuDsiClkGateEnableForDriver(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== ScePervasiveForDriver_39E51AE2 ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0x39E51AE2
 +
|}
 +
 
 +
Device at offset <code>0x10</code> (? GpuEs4 related (Secure)).
 +
 
 +
<source lang="C">int ScePervasiveForDriver_39E51AE2(int mask_maybe_unused);</source>
 +
 
 +
=== ScePervasiveForDriver_A2EFD7AF ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 3.60 || 0xA2EFD7AF
 +
|}
 +
 
 +
Device at offset <code>0x90 + bus*4</code>.
 +
 
 +
<source lang="C">int ScePervasiveForDriver_A2EFD7AF(int bus, int mask_maybe_unused);</source>
 +
 
 +
=== scePervasiveVipClkGateEnable1ForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 1.69-3.60 || 0xFB01A2DD
 +
|}
 +
 
 +
This is a guessed name.
 +
 
 +
Device at offset <code>0x30</code>. Mask 1.
 +
 
 +
Used to initialize [[Venezia]] registers or SPRAM.
  
=== ScePervasiveForDriver_DFD96BFC ===
+
<source lang="C">int scePervasiveVipClkGateEnable1ForDriver(void);</source>
 +
 
 +
=== scePervasiveVipClkGateEnable2ForDriver ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 3.60 || 0xDFD96BFC
+
| 3.60 || 0xB9904983
 
|}
 
|}
  
Turns on the clock (|= mask) of the device (SPI) at offset <code>0x104 + 4 * device</code> with mask = 1.
+
This is a guessed name.
 +
 
 +
Device at offset <code>0x30</code>. Mask 2.
  
<source lang="c">int ScePervasiveForDriver_DFD96BFC(int device);</source>
+
<source lang="C">int scePervasiveVipClkGateEnable2ForDriver(void);</source>
  
=== scePervasiveIftuDsiResetEnableForDriver ===
+
=== ScePervasiveForDriver_DFD96BFC ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 0.940-3.60 || 0xE3FC1C8D
+
| 3.60 || 0xDFD96BFC
 
|}
 
|}
  
Temp name was ScePervasiveForDriver_E3FC1C8D_dsi_reset_enter.
+
Turns on the clock (|= mask) of the device (SPI) at offset <code>0x104 + 4 * device</code> with mask = 1.
  
<source lang="c">int scePervasiveIftuDsiResetEnableForDriver(int bus, int value);</source>
+
<source lang="C">int ScePervasiveForDriver_DFD96BFC(int device);</source>
  
 
=== ScePervasiveForDriver_E4B145AE ===
 
=== ScePervasiveForDriver_E4B145AE ===
Line 459: Line 619:
 
Puts the device (SPI) at offset <code>0x104 + 4 * device</code> out of reset (&= ~mask) with mask = 1.
 
Puts the device (SPI) at offset <code>0x104 + 4 * device</code> out of reset (&= ~mask) with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_E4B145AE(int device);</source>
+
<source lang="C">int ScePervasiveForDriver_E4B145AE(int device);</source>
  
 
=== ScePervasiveForDriver_EB176898 ===
 
=== ScePervasiveForDriver_EB176898 ===
Line 471: Line 631:
 
Turns off the clock (&= ~mask) of the device (GPIO) at offset <code>0x100</code> with mask = 1.
 
Turns off the clock (&= ~mask) of the device (GPIO) at offset <code>0x100</code> with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_EB176898(void);</source>
+
<source lang="C">int ScePervasiveForDriver_EB176898(void);</source>
  
 
=== ScePervasiveForDriver_EFD084D8 ===
 
=== ScePervasiveForDriver_EFD084D8 ===
Line 483: Line 643:
 
Turns on the clock (|= mask) of the device (UART) at offset <code>0x120 + 4 * device</code> with mask = 1.
 
Turns on the clock (|= mask) of the device (UART) at offset <code>0x120 + 4 * device</code> with mask = 1.
  
<source lang="c">int ScePervasiveForDriver_EFD084D8(int uart_bus);</source>
+
<source lang="C">int ScePervasiveForDriver_EFD084D8(int uart_bus);</source>
  
 
=== ScePervasiveForDriver_1068C067 ===
 
=== ScePervasiveForDriver_1068C067 ===
Line 494: Line 654:
  
 
<source lang="C">int ScePervasiveForDriver_1068C067(SceDisplayHead head);</source>
 
<source lang="C">int ScePervasiveForDriver_1068C067(SceDisplayHead head);</source>
 
=== scePervasiveIftuDsiResetDisableForDriver ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 0.940-3.60 || 0xFFB43AC2
 
|}
 
 
Temp name was scePervasiveDsiResetDisableForDriver.
 
 
<source lang="c">int scePervasiveIftuDsiResetDisableForDriver(int bus, int value);</source>
 
  
 
=== scePervasiveCompatStopForDriver ===
 
=== scePervasiveCompatStopForDriver ===
Line 517: Line 665:
 
Executes smc_0x110(2, 0);
 
Executes smc_0x110(2, 0);
  
Called in sceCompatSuspend and sceCompatStop.
+
Called in [[SceCompat#sceCompatSuspend]] and [[SceCompat#sceCompatStop]].
  
 
<source lang="C">int scePervasiveCompatStopForDriver(void);</source>
 
<source lang="C">int scePervasiveCompatStopForDriver(void);</source>
Line 531: Line 679:
 
Executes smc_0x110(2, 1);
 
Executes smc_0x110(2, 1);
  
Called in sceCompatResume and sceCompatInit.
+
Called in [[SceCompat#sceCompatResume]] and [[SceCompat#sceCompatInit]].
  
 
<source lang="C">int scePervasiveCompatStartForDriver(void);</source>
 
<source lang="C">int scePervasiveCompatStartForDriver(void);</source>
Line 545: Line 693:
 
Executes smc_0x110(2, 2);
 
Executes smc_0x110(2, 2);
  
Called during PSP Emulator start and resume.
+
Called during PSP Emulator ([[SceCompat]]) start and resume.
  
 
<source lang="C">int scePervasiveCompatLcdDmacInitForDriver(void);</source>
 
<source lang="C">int scePervasiveCompatLcdDmacInitForDriver(void);</source>
 
=== ScePervasiveForDriver_FB01A2DD ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 1.69-3.60 || 0xFB01A2DD
 
|}
 
 
Used to initialize Venezia registers or SPRAM.
 
 
=== ScePervasiveForDriver_A7E64C6F ===
 
{| class="wikitable"
 
|-
 
! Version !! NID
 
|-
 
| 1.69-3.60 || 0xA7E64C6F
 
|}
 
 
Used to reset Venezia.
 
  
 
== SceGpioForDriver ==
 
== SceGpioForDriver ==

Revision as of 05:33, 2 January 2022

Module

Version World Privilege
1.69-3.65 Non-secure Kernel

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_E0711D42

Version NID
3.60 0xE0711D42

Calls SMC 0x110: smc_bus_set_state(1, 0);

Used by SceEnumWakeUp.

int ScePervasiveForDriver_E0711D42(void);

ScePervasiveForDriver_47708C03

Version NID
3.60 0x47708C03

Returns address to a buffer related to Clock Frequencies and Syscon. Maybe this value is the clock multiplier/divider. See Pervasive#ARM_Clocks.

Used by ScePower.

void *ScePervasiveForDriver_47708C03(void);

scePervasiveArmSetClockForDriver

Version NID
3.60 0xE9D95643

This is a guessed name.

Used only by ScePower.

int scePervasiveArmSetClockForDriver(SceUInt32 freq_level1, SceUInt32 freq_level2);

scePervasiveGpuSetClockForDriver

Version NID
3.60 0x6AF0196F

This is a guessed name.

Maybe called on each suspend/resume.

// a1: 3 (default value), 5 when DIP Switch 236 (GPU overclock) is set
int scePervasiveGpuSetClockForDriver(SceUInt32 freq_level1, SceUInt32 freq_level2);

scePervasiveVeneziaSetClockForDriver

Version NID
3.60 0x725B4F59

This is a guessed name.

int scePervasiveVeneziaSetClockForDriver(SceUInt32 freq_level);

scePervasiveVipSetClockForDriver

Version NID
3.60 0x12D17D47

This is a guessed name.

int scePervasiveVipSetClockForDriver(SceUInt32 freq_level);

scePervasiveDmac5SetClockForDriver

Version NID
3.60 0xA6832B33

This is a guessed name.

int scePervasiveDmac5SetClockForDriver(SceUInt32 freq_level);

scePervasiveBusSetClockForDriver

Version NID
3.60 0xC0F7CC39

This is a guessed name.

Requests TrustZone using SMC 0x114.

int scePervasiveBusSetClockForDriver(SceUInt32 freq_level);

scePervasiveSysSetClockForDriver

Version NID
3.60 0x98D8914A

This is a guessed name.

int scePervasiveSysSetClockForDriver(SceUInt32 freq_level);

scePervasiveGetSoCRevisionForDriver

Version NID
0.940-3.60 0x714EEFB7

Returns <= 0 if Kermit revision is below 2.0. Example of return value: 0-0x19, and something higher.

Seen values: 66 on a PCH-11xx, 277 on a PSVita Slim.

if val & 0x30000000 is zero, not devkit.

if val & 0x80000000 is not zero, Disabled LPDDR2SUB.

SceUInt32 scePervasiveGetSoCRevisionForDriver(void);

scePervasiveCecClockOutEnableForDriver

Version NID
0.940-3.60 0x26B51075

scePervasiveCecClockOutDisableForDriver

Version NID
0.940-3.60 0xD185D235

scePervasiveCameraBusClockSelectForDriver

Version NID
0.931-3.60 0x589D0291
// bus_clock can be either 2 (DOWN) or 5 (UP)
int scePervasiveCameraBusClockSelectForDriver(SceUInt32 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]);

scePervasiveIftuDsiResetEnableForDriver

Version NID
0.940-3.60 0xE3FC1C8D

Temp name was ScePervasiveForDriver_E3FC1C8D_dsi_reset_enter, scePervasiveDsiResetEnableForDriver.

Device at offset 0x80.

int scePervasiveIftuDsiResetEnableForDriver(int bus, int mask_maybe_unused);

ScePervasiveForDriver_4AF7A01E

Version NID
3.60 0x4AF7A01E

Same as scePervasiveIftuDsiResetEnableForDriver.

Device at offset 0x90 + bus * 4.

int ScePervasiveForDriver_4AF7A01E(int bus, int mask_maybe_unused);

scePervasiveIftuDsiResetDisableForDriver

Version NID
0.940-3.60 0xFFB43AC2

Temp name was scePervasiveDsiResetDisableForDriver.

Device at offset 0x80.

int scePervasiveIftuDsiResetDisableForDriver(int bus, int mask_maybe_unused);

ScePervasiveForDriver_13CC07C9

Version NID
3.60 0x13CC07C9

Same as scePervasiveIftuDsiResetDisableForDriver.

Device at offset 0x90 + bus * 4.

int ScePervasiveForDriver_13CC07C9(int bus, int mask_maybe_unused);

scePervasiveIftuDsiClkGateDisableForDriver

Version NID
0.940-3.60 0x25AE181E

Temp name was ScePervasiveForDriver_25AE181E_dsi_clock_disable, scePervasiveDsiClockDisableForDriver.

Device at offset 0x80.

int scePervasiveIftuDsiClkGateDisableForDriver(int bus, int mask_maybe_unused);

ScePervasiveForDriver_CA0ACFC5

Version NID
3.60 0xCA0ACFC5

Same as scePervasiveIftuDsiClkGateDisableForDriver.

Device at offset 0x10 (? GpuEs4 related (Secure)).

int ScePervasiveForDriver_CA0ACFC5(int mask_maybe_unused);

ScePervasiveForDriver_AD1E81EB

Version NID
3.60 0xAD1E81EB

Same as scePervasiveIftuDsiClkGateDisableForDriver.

Device at offset 0x90 + bus * 4.

int ScePervasiveForDriver_AD1E81EB(int bus, int mask_maybe_unused);

scePervasiveVipClkGateDisable1ForDriver

Version NID
1.69-3.60 0x2EEBE9AE

This is a guessed name.

Same as scePervasiveIftuDsiClkGateDisableForDriver.

Device at offset 0x30. Mask 1.

Used to initialize Venezia registers or SPRAM.

int scePervasiveVipClkGateDisable1ForDriver(void);

scePervasiveVipClkGateDisable2ForDriver

Version NID
3.60 0xFBE5AA2F

Same as scePervasiveIftuDsiClkGateDisableForDriver.

This is a guessed name.

Device at offset 0x30. Mask 2.

int scePervasiveVipClkGateDisable2ForDriver(void);

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

Temp name was scePervasiveGpioResetEnableForDriver.

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 of one of the 7 UART devices. See 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

Temp name was scePervasiveUartResetDisableForDriver.

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
1.69-3.60 0xA7E64C6F

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

Used to reset Venezia.

int ScePervasiveForDriver_A7E64C6F(void);

ScePervasiveForDriver_A85BF98A

Version NID
3.60 0xA85BF98A

Temp name was scePervasiveSpiClockDisableForDriver.

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

int ScePervasiveForDriver_A85BF98A(int device);

scePervasiveIftuDsiClkGateEnableForDriver

Version NID
0.940-3.60 0xBC42C72F

Temp name was scePervasiveDsiClockEnableForDriver.

Device at offset 0x80 + bus*4

int scePervasiveIftuDsiClkGateEnableForDriver(int bus, int mask_maybe_unused);

ScePervasiveForDriver_39E51AE2

Version NID
3.60 0x39E51AE2

Device at offset 0x10 (? GpuEs4 related (Secure)).

int ScePervasiveForDriver_39E51AE2(int mask_maybe_unused);

ScePervasiveForDriver_A2EFD7AF

Version NID
3.60 0xA2EFD7AF

Device at offset 0x90 + bus*4.

int ScePervasiveForDriver_A2EFD7AF(int bus, int mask_maybe_unused);

scePervasiveVipClkGateEnable1ForDriver

Version NID
1.69-3.60 0xFB01A2DD

This is a guessed name.

Device at offset 0x30. Mask 1.

Used to initialize Venezia registers or SPRAM.

int scePervasiveVipClkGateEnable1ForDriver(void);

scePervasiveVipClkGateEnable2ForDriver

Version NID
3.60 0xB9904983

This is a guessed name.

Device at offset 0x30. Mask 2.

int scePervasiveVipClkGateEnable2ForDriver(void);

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

scePervasiveCompatStopForDriver

Version NID
0.990-3.60 0x4712740D

Executes smc_0x110(2, 0);

Called in SceCompat#sceCompatSuspend and SceCompat#sceCompatStop.

int scePervasiveCompatStopForDriver(void);

scePervasiveCompatStartForDriver

Version NID
0.990-3.60 0xB2F232E5

Executes smc_0x110(2, 1);

Called in SceCompat#sceCompatResume and SceCompat#sceCompatInit.

int scePervasiveCompatStartForDriver(void);

scePervasiveCompatLcdDmacInitForDriver

Version NID
0.990-3.60 0xA7855D3A

Executes smc_0x110(2, 2);

Called during PSP Emulator (SceCompat) start and resume.

int scePervasiveCompatLcdDmacInitForDriver(void);

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

sceGrabCompatStartExForDriver

Version NID
3.60 0x072B8D93

Calls SMC 0x11e. smc(0x11E, 1, param)

Replacement for SceLowio#scePervasiveCompatStartForDriver.

// command: 0, 1
int sceGrabCompatStartExForDriver(int param);

SceGrabForDriver_188BBCC8

Version NID
3.60 0x188BBCC8

Calls SMC 0x11C.

SceGrabForDriver_1F292554

Version NID
3.60 0x1F292554

Calls SMC 0x121. smc(0x121)

sceGrabCompatLcdDmacInitForDriver

Version NID
3.60 0x379130B2

Calls SMC 0x11e. smc(0x11E, 2)

Replacement for SceLowio#scePervasiveCompatLcdDmacInitForDriver.

SceGrabForDriver_5F36ABC4

Version NID
3.60 0x5F36ABC4

Calls SMC 0x11f. smc(0x11f)

SceGrabForDriver_B22EE8BC

Version NID
3.60 0xB22EE8BC

Calls SMC 0x11b. smc(0x11b)

SceGrabForDriver_E9C25A28

Version NID
3.60 0xE9C25A28

Calls SMC 0x11d. smc(0x11d)

// bank can be from 0 to 7
int SceGrabForDriver_E9C25A28(SceUInt32 bank, SceUInt32 paddr);

sceGrabCompatStopForDriver

Version NID
3.60 0xF13C63DD

Calls SMC 0x11e. smc(0x11E, 0)

Replacement for SceLowio#scePervasiveCompatStopForDriver.

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. See also sceDsiQueryResolutionSizeForDriver.

sceDsiQueryResolutionSizeForDriver

Version NID
0.940 sceDsiQeuryResolutionSizeForDriver
3.60 0xB3A70C05

Temp name was sceDsiGetVicResolutionForDriver.

For progressive modes, V_total = V_active + VFP + VSW + VBP. For interlaced modes, V_total = V_active + 2 * (VFP + VSW + VBP) - 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 8.8 fixed point
	unsigned int src_y;               // offset into the source buffer in 8.8 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 Color Space 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
int sceIftuSetOutputFormatForDriver(int plane, int width, int height, int pixel_format, int interlaced);

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