Windows IoT LVDS Display not working

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Windows IoT LVDS Display not working

1,677 Views
Boni
Contributor I

Hello,

i try to set up a custom board (imx6q) with Windows IoT Core. Only the lvds display is not working under Windows. While booting u-boot, the display is running. I added the

 [PcdsFeatureFlag.common]

giMX6TokenSpaceGuid.PcdLvdsEnable|TRUE

to the *.dsc file.

I also added the display timing settings in the display.c file

IMX_DISPLAY_TIMING Kyocera_TCG84 = {
  40000000,   // PixelClock, 40000000 33260160
  800,       // HActive
  256,        // HBlank, Whole line - HActive
  600,        // VActive
  28,         // VBlank Whole frame - VActive
  128,         // HSync  - Sync pulse
  4,         // VSync  - Sync pulse
  40,         // HSyncOffset; - front porch horizontal
  1,          // VSyncOffset; - front porch vertical
  800,       // HImageSize
  600,        // VImageSize
  0,          // HBorder
  0,          // VBorder
  0,          // EdidFlags
  0,          // Flags
  1,          // PixelRepetition
  32,         // Bpp
  PIXEL_FORMAT_BGRA32,       // PixelFormat
};

and changed this pointer:

*PreferredTimingPtr = Kyocera_TCG84;

The Debug Log seems like i would be initialized correct.

GopDxeInitialize: Enter <\r><\n>
**********************<\r><\n>
Preferred Timing<\r><\n>
**********************<\r><\n>
PixelClock 40000000<\r><\n>
HActive 800<\r><\n>
HBlank 256<\r><\n>
VActive 600<\r><\n>
VBlank 28<\r><\n>
HSync 128<\r><\n>
VSync 4<\r><\n>
HSyncOffset 40<\r><\n>
VSyncOffset 1<\r><\n>
HBorder 0<\r><\n>
VBorder 0<\r><\n>
EdidFlags 0<\r><\n>
Flags 0<\r><\n>
PixelRepetition 1<\r><\n>
BPP 32<\r><\n>
PixelFormat 1<\r><\n>
**********************<\r><\n>
GetPreferredTiming: --GetPreferredTiming<\r><\n>
GopDxeInitialize: - Allocate frame buffer<\r><\n>
GopDxeInitialize: Display Memory: Needed=1920000, Available=8388608<\r><\n>
GopDxeInitialize: - allocating frame buffer... <\r><\n>
AllocateFrameBuffer: Enter<\r><\n>
AllocateFrameBuffer: Frame Buffer AddrP=10000000h<\r><\n>
AllocateFrameBuffer: Frame Buffer Size=800000h<\r><\n>
AllocateFrameBuffer: Allocate FB PhyAddr 10000000 VirtAddr 10000000<\r><\n>
AllocateFrameBuffer: Exit = 0h<\r><\n>
GopDxeInitialize: - Initialize the frame buffer to green<\r><\n>
GopDxeInitialize: - set display configuration to single HDMI (DisplayDevice: 2)<\r><\n>
SetupDisplayMux: - GPR3_REG: 31457280<\r><\n>
ImxSetPll5ReferenceRate: PLL 5 setting (40000000) Target Freq 800000000 Divider 5 PostDiv 4<\r><\n>
ConfigureDisplayInterface: - DisplayInterfaceContextPtr->displayInterface: 0<\r><\n>
InstallProtocolInterface: 9042A9DE-23DC-4A38-96FB-7ADED080516A 4EE893B4<\r><\n>
InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B 4EE8939C<\r><\n>
GopDxeInitialize: Exit = 0h<\r><\n>

Do i need to enable or change something else?

Labels (3)
0 Kudos
4 Replies

1,457 Views
Boni
Contributor I

Most of the registers are now like in the uboot. After checking and comparing the signals between uboot and uefi it seems that there is no data on the data lines while running uefi and Windows. Are there some registers that should also have been set in the uboot instead of the uefi? 

0 Kudos

1,457 Views
Boni
Contributor I

I found the problem. I commented out "CONFIG_IMX_PERSIST_INIT=y" in my defconfig. After i reactived it, the LVDS display works.

0 Kudos

1,457 Views
Boni
Contributor I

I compared all registers that get changed by the edk2 and there where some differences. After that I changed the settings in the edk2 so that all registers have the same values like the uboot but the display won't work under Windows IoT and the edk2. Now I don't have any idea what can be wrong. The display works fine with the uboot and worked with windows ce that runs on our boards the last years so the hardware should not be a problem. 

0 Kudos

1,457 Views
petr_kovar
NXP Employee
NXP Employee

Hi Christian,

 

your method was correct. To enable LVDS instead of HDMI as default display you should indeed just change FALSE to TRUE in

 

giMX6TokenSpaceGuid.PcdLvdsEnable| TRUE

 

in

 

imx-edk2-platforms\Platform\NXP\Sabre_iMX6Q_1GB\Sabre_iMX6Q_1GB.dsc

 

This feature is tested and working properly on NXP SABRE boards (https://www.nxp.com/design/development-boards/i.mx-evaluation-and-development-boards/sabre-board-for...)

Reasons for this issue could be numerous, from bad LVDS cables to incorrect HW setup or wrong parameters in timing. I would recommend to compare your design with reference board design. Sadly we don’t have any Kyocera LVDS Displays to help you with setup.

 

If you have more questions please feel free to ask.

 

Petr

0 Kudos