Enable DIU on T1042D4RDB

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

Enable DIU on T1042D4RDB

927 Views
EmbEng
Contributor III

I am trying to get the HDMI port of T1042D4RDB working. In order to do this, I followed section 7.2.1 of QorIQ-SDK-2.0-1703-Rev0.pdf. I have compiled kernel with DIU support enabled and also set 'video-mode' parameter of u-boot to 'fslfb:1024x768-32@60,monitor=dvi'.

I am booting the system by doing tftp of DIU enabled uImage, fsl-image-core & default .dtb file generated during kernel build. But when I attach LCD monitor to T1042 RDB via HDMI to VGA converter, I get Freescale logo during boot and a plain colored screen when boot is complete. There's no linux console available on screen.

Can someone point out the reason for this behavior?

Labels (1)
0 Kudos
2 Replies

525 Views
bpe
NXP Employee
NXP Employee

DIU Framebuffer driver is a generic graphic display driver, it works
with pixels and is not aware of characters. If you wish to use it as
a console, you need a framebuffer console driver, fbcon. Visit the link
below for details:

http://git.freescale.com/git/cgit.cgi/ppc/sdk/linux.git/tree/Documentation/fb/fbcon.txt


Have a great day,
Platon

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

525 Views
EmbEng
Contributor III

Thanks bpe‌ for response. I have enabled fbcon in kernel but now I am getting kernel panic on boot. I guess there's some issue with the DIU driver because I was getting a similar panic for X11 display as mentioned in my other thread (which is still unanswered). Below is snippet of boot dump after enabling fbcon:

Freescale Display Interface Unit (DIU) framebuffer driver
Unable to handle kernel paging request for instruction fetch
Faulting instruction address: 0x00000000
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=8 CoreNet Generic
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.1.35-rt41 #18
task: e5047910 ti: e5048000 task.ti: e5048000
NIP: 00000000 LR: c02ddc98 CTR: 00000000
REGS: e5049b30 TRAP: 0400   Not tainted  (4.1.35-rt41)
MSR: 00029002 <CE,EE,ME>  CR: 24ad2e82  XER: 00000000

GPR00: c02dda6c e5049be0 e5047910 00003c19 e5770f60 297fd000 00000100 e577125f
GPR08: 07400000 00000000 00000003 00000001 ea16eacc 00000000 e5770000 00000000
GPR16: 00000001 00000000 00000000 000000c4 c0888784 c098102c c09e2b88 c09e36bc
GPR24: 00000001 e5800000 e577002c e5770000 c09c3610 f1934000 e5770000 e5770008
NIP [00000000]   (null)
LR [c02ddc98] fsl_diu_set_par+0x2d8/0x3b0
Call Trace:
[e5049be0] [c02dda6c] fsl_diu_set_par+0xac/0x3b0 (unreliable)
[e5049c10] [c02df3e4] fsl_diu_open+0x94/0x2f0
[e5049c30] [c02cd104] fbcon_startup+0xa4/0x310
[e5049c50] [c02fbf6c] do_take_over_console+0x11c/0x210
[e5049c80] [c02cdd74] do_fbcon_takeover+0x84/0x110
[e5049c90] [c004e740] notifier_call_chain+0x60/0xb0
[e5049cb0] [c004eb20] __blocking_notifier_call_chain+0x50/0x80
[e5049cd0] [c02d57c0] register_framebuffer+0x1f0/0x2e0
[e5049d40] [c02dec24] fsl_diu_probe+0x444/0x7c0
[e5049da0] [c0321dc0] platform_drv_probe+0x50/0x110
[e5049dc0] [c031fe88] driver_probe_device+0x1f8/0x330
[e5049de0] [c03200fc] __driver_attach+0xbc/0xc0
[e5049e00] [c031db0c] bus_for_each_dev+0x6c/0xc0
[e5049e30] [c031f308] bus_add_driver+0x178/0x250
[e5049e50] [c03208b8] driver_register+0x88/0x140
[e5049e60] [c093d868] fsl_diu_init+0x58/0x144
[e5049e90] [c0001f80] do_one_initcall+0x90/0x1f0
[e5049f00] [c0921b3c] kernel_init_freeable+0x138/0x1d0
[e5049f30] [c0002714] kernel_init+0x14/0x110
[e5049f40] [c000f198] ret_from_kernel_thread+0x5c/0x64
Instruction dump:
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
---[ end trace e1bec74e1cbc1a6c ]---

Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

Rebooting in 180 seconds..

[EDIT]

After investigating a bit, I have found that the 'diu_ops' object in drivers/video/fbdev/fsl-diu-fb.c is not initialized. Therefore the driver is crashing whenever there is no sanity check to verify 'diu_ops'. It looks that the object is initialized in 't1042rdb_diu_init()' function in arch/powerpc/platforms/85xx/corenet_diu.c but that function is not being called. Any suggestions?

P.S: I am using QorIQ-SDK-2.0-1703

0 Kudos