Display Driver Registry Settings
Registry Locations
The Display Driver Settings are located in registry file under the key name mentioned below:
Colibri Module | Windows CE Image Version | Registry Location |
---|---|---|
Colibri PXAxxx | before V3.0 | [HKLM\Drivers\Display\PXA27x\Config] |
Colibri PXAxxx | V3.0 and newer | [HKLM\Drivers\Display\Colibri] |
Colibri VFxx | (all) | [HKLM\Drivers\Display\Colibri] |
Colibri Txx | (all) | [HKLM\Software\Nvidia Corporation\NVDDI\LCD] |
Colibri iMX6 | (all) | [HKLM\Drivers\Display\Colibri] |
Apalis T30 | (all) | [HKLM\Software\Nvidia Corporation\NVDDI\LCD] |
Apalis iMX6 | (all) | [HKLM\Drivers\Display\Apalis] |
Colibri iMX7 | (all) | [HKLM\Drivers\Display\Colibri] |
For PXA and Tegra-based modules, you can use the Colibri Tweak Tool to adjust most of these settings.
For Vybrid, i.MX6 and i.MX7 and Tegra based modules, you can use the Display Tool to adjust most of these settings.
Registry Settings
T20/T30 GPIOs
Whenever a GPIO for the Tegra based modules is used, a special conversion from GPIO name to GPIO number needs to be used:
GPIO A0 → 0, ... GPIO A7 → 7
GPIO B0 → 8, ... GPIO B7 → 15
GPIO C0 → 16, ... GPIO C7 → 23
...
VFXX GPIOs/Pins
On Vybrid-based modules, the BL_GPIO and DISP_GPIO settings use GPIO numbers. If you want to use SO-DIMM pin numbers you can use then BL_PIN and DISP_PIN settings, but those will work only if the corresponding *_GPIO parameter is not set.
IMX6 and IMX7 Pins
On those platforms GPIO numbers are not used, the BL_GPIO and DISP_GPIO settings actually use PIN number (SO-DIMM number for IMX7 and Colibri-IMX6 and MXM3 number for Apalis IMX6). This will make display configuration more compatible across different modules and families.
Settings for all Colibri and Apalis Modules
The table below lists all available registry settings for the display driver.
For the Tegra modules, timings only affect the LCD output. For the other outputs, EDID data is read from the screen, and the most appropriate VESA timings are used.
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
CxScreen | Horizontal Screen Resolution | PXA: 1-1024 Tegra: 1-2048 VFxx: 16-1024 iMX6: 16-4096 | 640 | |
CyScreen | Vertical Screen Resolution | PXA: 1-1024 Tegra: 1-2048 VFxx: 4-768 iMX6: 16-2048 | 480 | |
Bpp | Frame Buffer Color Depth | 16, 32 VFxx,iMX6: 16, 32 Txx: use MainPanelBpp | 16 VFxx, iMX6: 32 | q w |
LDDS | Number of LCD Data Lines used | 4, 8, 16, 18, 24 VFxx: 15,16,18,24 iMX6: 16,18,24 | ||
PCLK | Pixel clock in Hz | PXA: 203'000 - 52'000'000 Tegra: 203'000-168'000'000 VFxx:203'000 - 60'000'000 iMX6: 203'000 - 170'000'000u | 25'000'000 | |
PCP | Pixel Clock Polarity | 0: Data valid on Rising Edge 1: Data valid on Falling Edge | 1 | |
OEP | Output Enable Polarityv | 1: ActiveLow 0: ActiveHigh | 0 | |
HSW | Horizontal Sync Width in Pixels | PXA: 1-64 Tegra: 0-8191 i.MX6: 0-1024 | 2 | |
BLW | Begin of Line Width (Back Porch) in Pixels | PXA: 1-256 Tegra: -4096-4095 VFxx: 1-256 iMX6: 0-1024 | 160 | |
ELW | End of Line Width (Front Porch) in Pixels | PXA: 1-256 Tegra: 0-8191 VFxx: 1-256 iMX6: 0-1024 | 2 | |
HSP | Horizontal Sync Polarity | 0: Active High 1: Active Low | 0 | |
VSW | Vertical Sync Width in Lines | PXA: 1-64 Tegra: 0-8191 VFxx, iMX6: 1-256 | 45 iMX6: 2 | |
BFW | Begin of Frame Width (Back Porch) in Lines | PXA: 0-255 Tegra: -4096-4095 VFxx: 1-256 iMX6: 0-1024 | 0 | |
EFW | End of Frame Width (Front Porch) in Lines | PXA: 0-255 Tegra: 0-8191 VFxx: 1-256 iMX6: 0-1024 | 0 | |
VSP | Vertical Sync Polarity | 0: Active High 1: Active Low | 0 | |
BL_GPIO | GPIO/Pinx used to Turn On/Off Backlight | Any free GPIO/Pin, or -1 for None | (SODIMM 71) | i |
BL_POL | Polarity for Backlight GPIO | 0: ActiveLow 1: ActiveHigh | 1 | |
DISP_GPIO | GPIO/Pinx used to Turn On/Off Display Power | Any free GPIO/Pin, or -1 for None | (SODIMM 71) | i |
DISP_POL | Polarity for Display Power GPIO | 0: Active Low 1: Active High | 1 | |
DispOnDelay | Display Enable (DISP_GPIO) on delay in ms compared to the LCD data signals | VFxx,iMX6,iMX7 : not supported | 0 | b |
LCDBS | Display signal buffer strength. This value could be changed to reduce EMC problems. | PXA270: 0-15 PXA3xx: 0-7 VFxx 0-7 Txx: See Note p iMX6: 0-7 | PXA, iMX6 and VFxx: 5 Txx: 0xF1612030 | p |
Settings for Colibri PXAxxx Modules Only
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
Verbosity | Bitmask to show additional display driver infos on the debug port. | 1: Errors 2: Warnings 4: Initialize 8: Allocation | 0 | g |
Type | Display Type | 0: Passive 1: Active -1: LCD unit disabled | 1 | |
Color | color or Monochrome Selection | 0: Monochrome 1: Color | 1 | |
Dual | Dual or Single Panel Selection | 0: Single 1: Dual | 0 | |
PCLKStall | Stops the Pixel Clock if a LCD underrun occurs. This can help if your display is connected over TTL | 0 | d | |
VideoRAMSize | overrides the default value for the video ram. (In bytes) | h | ||
UseSRAM | Reserved internal SRAM for display driver. | 0: SRAM not used for display driver 1: maximum available SRAM is used >1: reserved size in bytes | 0 | c g |
Blit | Blit Hardware Support | 0: use emulation 1: XScale optimized 2: use 2D acceleration if possible | 2 | |
Cursor | Mouse Cursor Mode | 2: Hardware cursor 1: Software Cursor 0: hide the mouse cursor | 2 | |
EdidSlaveAddr | 7-bit i2c address where the EDID EEPROM containing display timing information is located. | 0x00-0x7f | e f | |
DispOffDelay | Display Enable (DISP_GPIO) off delay in ms compared to the LCD data signals | 0 | b |
Settings for Colibri Txx and Apalis Txx Modules Only
The following registry entries are located at:
[HKLM\Software\Nvidia Corporation\NVDDI]
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
Enable2D | Enable hardware 2D acceleration in display driver | 0: Off 1: On | 1 | |
HwCursor | Mouse Cursor | 1: Mouse cursor ON 0: Mouse cursor OFF | 1 | |
MainPanelBpp | Frame Buffer Color Depth | 16, 32 | 16 | |
DesktopWidth | Framebuffer Width | 1-2048 | 640 | j |
DesktopHeight | Framebuffer Height | 1-2048 | 480 | j |
DesktopScaleMode | Behavior if Desktop does not match Screen | 1: Scale, preserve aspect ratio 2: Center the desktop 3: Scale | 1 | |
HDMIHotplugBehavior | Behavior of the HotPlug pin | 1: Connect HDMI on HotPlug interrupt 2: Do not connect HDMI, but update list of available display modes | 1 | |
BootupStyle | Active Display at startup (bit mask) | Active Display - 0x00001: LCD - 0x00006: TvOut (NTSC) - 0x0000a: TvOut (PAL) - 0x00010: HDMI - 0x00020: CRT Additional Flags - 0x20000: Cinema Mode - 0x30000: Cinema and Mirror Mode | Colibri: LCD Apalis: LCD and CRT since 1.3beta3 | k m |
HotPlugStyle | Active Display while HotPlug pin is active (bit mask) | Active Display - 0x00001: LCD - 0x00006: TvOut (NTSC) - 0x0000a: TvOut (PAL) - 0x00010: HDMI - 0x00020: CRT Additional Flags - 0x20000: Cinema Mode - 0x30000: Cinema and Mirror Mode | Colibri: LCD and HDMI Apalis: CRT and HDMI since 1.3 | k m |
FilterScaledDesktops | Filter, if display resolution is not equal to desktop resolution | 0: do not filter 1: activate filter | 0 | |
ColorSize | Native display color depth | 1: 111 2: 222 3: 333 4: 444 5: 555 6: 565 7: 666 8: 332 9: 888 | 7 | n |
UseSplashSettings | Ignores additional registry parameters and uses the configuration used for the splash screen. | 0/1 | 1y | since 2.2b4 |
The following registry entries are located at:
[HKLM\Software\Nvidia Corporation\NVDDI\LCD]
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
forcePLLD | Force the PLLD to be used as source clk. Use this if you need a more accurate pixel clock. Otherwise the best fitting clock source is chosen by the driver. | 0: set by driver 1: force PLLD | 0 | since 1.4beta1 |
LvdsEnable | Enable or disable LVDS converter | 0: Disabled 1: Enabled | 0 | since 2.0beta3, Apalis T30 only. |
LvdsMode | Single or dual channel LVDS mode | 0: Dual channel 1: Single channel | 0 | since 2.0beta3, Apalis T30 only. |
LvdsBitMode | 18 bit (6 bit per colour) or 24 bit (8 bit per colour) mode | 0: 24 bit 1: 18 bit | 0 | since 2.0beta3, Apalis T30 only. |
LvdsMap | 24 bit / 18 bit compatible (JEIDA) or Common 24 bit colour mode (VESA) | 0: VESA 1: JEIDA | 0 | since 2.0beta3, Apalis T30 only. |
LvdsRS | LVDS swing mode: standard LVDS value or reduced swing reduces EMI and power consumption, suitable for short cables | 0: reduced 1: standard | 0 | since 2.0beta3, Apalis T30 only. |
Settings for Colibri VFxx Modules Only
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
UseSplashSettings | Ignores additional registry parameters and uses the configuration used for the splash screen. | 0/1 | 1 | |
VideoRamSize | Configures the amount of bytes used for display frame buffer, overlays and back buffers | 0-32MB | 0x800000-0xC00000 (8-12MB depending on the display resolution) | r |
ActivateDisplayEvent | If present, this key forces the display to show splash screen until the specified named OS event is set. | SYSTEM/ShellAPIReady | s | |
FirstRefreshDelay | Delay (in milliseconds) between the driver loading and display initialization, this may prevent "black screen" between splash screen and desktop/application | 0-n | 10000 | t |
Cursor | Mouse Cursor Mode | 1: Mouse cursor ON 0: Mouse cursor OFF | 2 | |
DISP_PIN | PIN used to Turn On/Off Display Power | Any free SODIMM | if DISP_GPIO is not defined then DISP_PIN is checked | |
BL_PIN | PIN used to Turn On/Off Display backlight | Any free SODIMM | if BL_GPIO is not defined then BL_PIN is checked |
Settings for i.MX6 Modules Only
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
UseSplashSettings | Ignores additional registry parameters and uses the configuration used for the splash screen. | 0/1 | 1 | |
Out | Output port, all values are valid on Apalis, on Colibri only 0 and 5 are supported. 0 - VGA on Apalis / Parallel LCD on Colibri 1 - Parallel LCD 2 - LVDS Channel 0 3 - LVDS Channel 1 4 - LVDS dual channel 5 - HDMI/DVI | 0-5 | 0 | |
CxScreenPhysical | Defines the display physical horizontal resolution | 0-2047 | CxScreen must be lower or equal and image will be centered on the screen | |
CyScreenPhysical | Defines the display physical vertical resolution | 0-2047 | CyScreen must be lower or equal and image will be centered on the screen | |
VideoMemSize | Configures the amount of bytes used for video memory | 0-128MB | 0x800000-0x2000000 (8MB on Colibri-32MB on Apalis) | |
EdidSlaveAddr | 7-bit i2c address where the EDID EEPROM containing display timing information is located. | 0x00-0x7f | Default value 0x50 | |
UseStandardMode | Mode number of a standard CEA mode that should be used for the display (check iMX6 reference manual for a list of supported CEA modes). | 0x00-0x7f | ||
DetectMode | Defines how the driver behaves when EDID is enabled | 0-2 | 0: Use a mode that matches the configured display resolution 1: Use the standard CEA mode that is closer to the desired resolution and supported by the display 2: Use EDID preferred mode (usually maximum display resolution) | |
Cursor | Mouse Cursor Mode | 1: Cursor is visible 0: hide the mouse cursor | ||
UseJeidaMapping | Uses JEIDA standard mapping for LVDS signals (1=JEIDA). | 0/1 | 0 | |
DisableSyncs | Bitmask of signals that should be disabled (1=HSYNC,2=VSYNC,4=OE/DE; E.g. Disable HSYNC & VSYNC = 3) | 0/5 | 0 |
Support for multiple displays
To support an additional display you can create a subkey under the display configuration key. This key is used to specify the additional screen's parameters, using the same entries described above for the main screen.
Key can be named "Clone" to have a second display that reproduces the same image of the main one (the image will be centered if the resolution is higher than the main display) or "Secondary" if the display will be independent.
It's possible to specify a different pixel clock, polarities, and timings for the additional display. Please consider that some hardware limitations may prevent you from using some pixel clock frequencies combination because none of the additional PLLs used for video may match the range of the clocks.
Make sure that you configure the identical bpp value (16 or 32) for all displays.
To use clone mode: Add the following registry key/value:
[HKLM\Drivers\Display\Colibri\Clone] ;(you need to use Apalis instead of Colibri as the key name on Apalis module)
"Out" = dword:5
To enable extended display: Add the following registry values:
[HKLM\Drivers\Display\Colibri\Secondary] ;(you need to use Apalis instead of Colibri as key name on apalis modules)
"Out"=dword:5
Starting from release 1.2 of the BSP and image the display driver supports multiple displays. If you configured a secondary display (not a clone) you can change
[HKLM\SYSTEM\GDI\Monitors]
"Total Monitors"=dword:2 ; Please note the space character in "Total Monitors" !
After a reboot, Windows CE will use both displays and allows you to move an application from one display to the other. Displays will be aligned side by side, with the main one (configured directly under display) at coordinates 0,0 and the additional one on its right.
Please download the sample registry file.
Solve issues for applications that directly access video memory
Applications that bypass the blitting calls by accessing video memory directly may show some artifacts on screen because this memory is accessed through cache. To prevent this from happening you need to add the following registry entries:
[HKLM\Drivers\Display\Colibri] ;(you need to use Apalis instead of Colibri as the key name on Apalis modules)
"MemoryAttr"=dword:0
"UncachedSurfaces"=dword:1
[HKLM\Drivers\Builtin\IPU1_BASE]
"CacheMode"=dword:2
Settings for i.MX7 Modules Only
Registry Key | Description | Valid Settings | Default Value | Note |
---|---|---|---|---|
UseSplashSettings | Ignores additional registry parameters and uses the configuration used for the splash screen. | 0/1 | 1 | |
VideoMemSize | Configures the amount of bytes used for video memory | 0-128MB | 0x800000 (8MB) |
Display Timings
The following picture shows the naming convention for display timings in the registry settings.
Front: Beginning of line/frame and is also known as Back Porch in many display datasheets.
Back: End of line/frame and is also known as Front Porch in many display datasheets.
- For Txx modules enter the register value of the LCDCFG2 pad control register. More information about this setting can be found in the Technical Reference Manual - Tegra2, Tegra3. To minimize the drive strength try to set lcdbs to 0xF0000000↩
- In PXA Images later than V3.3 negative values allowed. Negative values are not supported in the Bootloader In Tegra Images supported since V1.3, no negative values allowed↩
- If BL_GPIO and DISP_GPIO are set to the same value, the Display Driver stops the LCD controller when turning off the backlight The default values for BL_GPIO and DISP_GPIO depend on the Colibri module; the default is the GPIO which is routed to SODIMM 71↩
- Some platforms (T20-T20/VFxx) use GPIO number, others (IMX6, IMX7) use connector pin number↩
- Output Enable polarity can't be changed on Vybrid, it's always positive↩
- Actual maximum value may vary depending on memory bandwidth and other factors, please check the processor reference manual for more detailed specifications↩
- Currently maximum display resolution supported on Vybrid VF50 is 1024x768@16BPP (XGA), 32BPP not possible at this resolution↩
- For any dual display configuration on the iMX6 (clone / extended), the bpp value must be identical for all displays↩
- Any value outside this range disables the EDID feature↩
- Available in Image V3.7beta1 and later↩
- PXA320 only↩
- Available in Image V3.4beta2 and later↩
- For more information about using VideoRAMSize (overriding the video RAM size) see VideoRAM↩
- Available in Image V3.6 beta 1 and later↩
- If Splashscreen and Desktop resolution match this settings defaults to 1, if they don't match it defaults to 0↩
- This parameter is located in
[HKLM\Software\Nvidia Corporation\NVDDI\LCD]
. The display controller uses dithering to emulate the color depth given in the Bpp parameter↩ - Do a logical OR of 1 or 2 displays. For dual display, optionally add the cinema or mirror bits. The default is mirror mode, i.e. both screen show the same content. In cinema mode, videos are shown on the 2nd display.
For example 0x20011: LCD and HDMI (Cinema) - The desktop is shown on the LCD output, videos are shown on the HDMI output↩ - Not all combinations are tested↩
- To avoid stretching, we recommend to set the framebuffer resolution identical to the screen resolution↩
- If the ActivateDisplayEvent is used, this value is the timeout used to wait on the event↩
- See Splash Screen for a usage sample↩
- This parameter is considered only if the "UseSplashSettings" parameter is set to 0. The default value is 4 or 8MB, depending on resolution and bit depth↩