IFTU Registers

From Vita Development Wiki
Jump to navigation Jump to search

IFTU stands for Integrated Facility Terminating Unit. Related to Display, to MIPI (Mobile Industry Processor Interface) DSI (Display Serial Interface), to CSC (Color Space Conversion).

IFTU Definition

Look [1] at chapter 1.2.7.2 Facility Terminating Unit and Integrated Facility Terminating Unit.

MMIO Interfaces

Name Physical address
SceIftu0RegA (OLED/LCD FB) 0xE5020000
SceIftu0RegB 0xE5021000
SceIftuc0Reg 0xE5022000
SceIftu1RegA (HDMI FB) 0xE5030000
SceIftu1RegB 0xE5031000
SceIftuc1Reg 0xE5032000
SceIftu2Reg (probably CSC) 0xE5040000

Registers

SceIftu0RegA, SceIftu0RegB, SceIftu1RegA, SceIftu0RegB (plane registers)

Offset Size Description
0x000 4 Control register: bit 0 = enable?, bit 2 = ??, bit 3 = ??
0x004 4 CRTC mask: bit 0 = enable scanout to engine/CRTC of OLED/LCD, bit 1 = enable scanout to engine/CRTC of HDMI
0x040 4 Interrupts (read = triggered interrupts, write = clear interrupt)
0x050 4 Interrupt enable. bit 0 = first plane, bit 1 = second plane
0x054 4 ??
0x058 4 ??
0x08C 4 Alpha value (transparency) from 0x00 to 0xFF
0x0A0 4 Alpha control: (bit 0 = disable alpha blending)
0x100 4 CSC Control. bit 0 = enable CSC
0x104 4 CSC unknown
0x108 4 CSC unknown
0x10C 4 CSC rr, S3.9 fixed point format
0x110 4 CSC rg, S3.9 fixed point format
0x114 4 CSC rb, S3.9 fixed point format
0x118 4 CSC gr, S3.9 fixed point format
0x11C 4 CSC gg, S3.9 fixed point format
0x120 4 CSC gb, S3.9 fixed point format
0x124 4 CSC br, S3.9 fixed point format
0x128 4 CSC bg, S3.9 fixed point format
0x12C 4 CSC bb, S3.9 fixed point format
0x130 4 CSC post-multiplication add (fb plane 0), 10-bit int
0x134 4 CSC post-multiplication add (fb planes 1 and 2), 10-bit int
0x138 4 CSC rr, S3.9 fixed point format
0x13C 4 CSC rg, S3.9 fixed point format
0x140 4 CSC rb, S3.9 fixed point format
0x144 4 CSC gr, S3.9 fixed point format
0x148 4 CSC gg, S3.9 fixed point format
0x14C 4 CSC gb, S3.9 fixed point format
0x150 4 CSC br, S3.9 fixed point format
0x154 4 CSC bg, S3.9 fixed point format
0x158 4 CSC bb, S3.9 fixed point format
0x15C 4 CSC post-multiplication clamp range max (fb plane 0), 10-bit int
0x160 4 CSC post-multiplication clamp range min (fb plane 0), 10-bit int
0x164 4 CSC post-multiplication clamp range max (fb planes 1 and 2), 10-bit int
0x168 4 CSC post-multiplication clamp range min (fb planes 1 and 2), 10-bit int
0x180 4 Some flags (bilinear filter)
0x200 + n * 0x100 + 0x00 4 Source plane 0 physical address
0x200 + n * 0x100 + 0x04 4 Source plane 1 physical address
0x200 + n * 0x100 + 0x08 4 Source plane 2 physical address
0x200 + n * 0x100 + 0x40 4 Source pixelformat (0x10 = A8B8G8R8)
0x200 + n * 0x100 + 0x44 4 Source width (aligned to 16)
0x200 + n * 0x100 + 0x48 4 Source height (aligned to 8)
0x200 + n * 0x100 + 0x4C 4 Control register. bit 0 = disable plane
0x200 + n * 0x100 + 0x54 4 Source leftover stride, ((pitch - aligned_width) * bpp)
0x200 + n * 0x100 + 0x58 4 Source leftover align, if YCbCr: (width >> 1) & 0xF (Chroma align?)
0x200 + n * 0x100 + 0x60 4 Framebuffer vertical top padding
0x200 + n * 0x100 + 0x64 4 Framebuffer vertical bottom padding
0x200 + n * 0x100 + 0x68 4 Framebuffer horizontal left padding
0x200 + n * 0x100 + 0x6C 4 Framebuffer horizontal right padding
0x200 + n * 0x100 + 0x80 4 Destination plane 0 physical address
0x200 + n * 0x100 + 0x84 4 Destination plane 1 physical address
0x200 + n * 0x100 + 0x88 4 Destination plane 2 physical address
0x200 + n * 0x100 + 0xA0 4 Destination pixelformat
0x200 + n * 0x100 + 0xA4 4 Destination width
0x200 + n * 0x100 + 0xA8 4 Destination height
0x200 + n * 0x100 + 0xB4 4 Destination leftover stride, ((pitch - aligned_width) * bpp)
0x200 + n * 0x100 + 0xB8 4 Destination leftover align, if YCbCr: (width >> 1) & 0xF (Chroma align?)
0x200 + n * 0x100 + 0xC0 4 Scanout source width in 16.16 fixed point ratio of the destination width
0x200 + n * 0x100 + 0xC4 4 Scanout source height in 16.16 fixed point ratio of the destination width
0x200 + n * 0x100 + 0xC8 4 Scanout destination X
0x200 + n * 0x100 + 0xCC 4 Scanout destination Y
0x200 + n * 0x100 + 0xD0 4 Scanout source X in 4.4 fixed point
0x200 + n * 0x100 + 0xD4 4 Scanout source Y in 4.4 fixed point

SceIftuc0Reg, SceIftuc1Reg (control registers)

Offset Size Description
0x00 4 Control register. bit 0 = enable engine.
0x04 4 Plane control register. bit 0 = enable alpha blending, bit 2 = enable first plane, bit 4 = enable second plane.
0x10 4 RegA configuration selector: bit 0 = Use the first (offset 0x2XX) or second (offset 0x3XX) configuration
0x14 4 RegA unk
0x18 4 RegB configuration selector: bit 0 = Use the first (offset 0x2XX) or second (offset 0x3XX) configuration
0x1C 4 RegB unk
0x20 4 Blending control register. bit 1 = additive blending. bit 0 = subtractive blending.

Pixelformats

Format Value
BGR565 0x01
RGB565 0x02
BGRA5551 0x04
RGBA5551 0x08
BGRX8888 0x10
RGBX8888 0x20
BGRA1010102 0x40
RGBA1010102 0x80
BGRP 0x100
RGBX8888_MULT 0x1000
BGRX8888_MULT 0x2000
RGBA1010102_MULT 0x4000
RGBA1010102_MULT 0x8000
NV12 0x10000
YCBCR420 0x20000
YCBCR422 0x200000

SceIftu2Reg

Probably CSC (see SceLowio#sceIftuConvertForDriver). See also Pervasive. To be documented.