Hi. I am trying to run pipeline such as Null Source link to GFX1 display.
My setup is:
- late attach
- pipeline on M4 core
- boot from SD
- sdk 3.0.7
NullSrc setup:
Void DispInitNullSrcPrms(struct DispApp *appObj) { NullSrcLink_CreateParams *prms = &appObj->graphObj.NullSourcePrm; NullSrcLink_CreateParams_Init(prms); System_LinkChInfo *pChInfo = &prms->outQueInfo.chInfo[0]; prms->timerPeriodMilliSecs = NULLSRC_TIME_INTERVAL; prms->outQueInfo.numCh = 1; prms->channelParams[0].numBuffers = NULLSRC_NUM_OUTBUF; prms->appCb = NullSrc_CB; prms->inEofCb = NullSrc_inEofCb; prms->appCbArg = appObj; pChInfo->flags = System_Link_Ch_Info_Set_Flag_Data_Format(pChInfo->flags, SYSTEM_DF_BGR24_888); pChInfo->flags = System_Link_Ch_Info_Set_Flag_Scan_Format(pChInfo->flags, SYSTEM_SF_PROGRESSIVE); pChInfo->flags = System_Link_Ch_Info_Set_Flag_Buf_Type(pChInfo->flags, SYSTEM_BUFFER_TYPE_VIDEO_FRAME); pChInfo->width = 1920; pChInfo->height = 720; pChInfo->startX = 0; pChInfo->startY = 0; pChInfo->pitch[0] = SystemUtils_align(pChInfo->width * 3, 32); }
When I set SYSTEM_DF_RGB24_888 data format - I get error while creating GFX display
[HOST] [IPU2 ] 7.706246 s: hal/src/vpshal_dssDispcVid.c @ Line 960: [HOST] [IPU2 ] 7.706338 s: Invalid Data format: 20 [HOST] [IPU2 ] 7.706429 s: dispdrv/src/vpsdrv_displayCore.c @ Line 304: [HOST] [IPU2 ] 7.706490 s: Set DSS parameter failed [HOST] [IPU2 ] 7.706551 s: Assertion @ Line: 463 in displayLink_drv.c: status==SYSTEM_LINK_STATUS_SOK : failed !!!
It seems this format is not supported for gfx display:
ti_components/drivers/pdk_01_10_03_07/packages/ti/drv/vps/src/vpslib/hal/src/vpshal_dssDispcVid.c:
Int32 halDssConvFvid2DataFmt(UInt32 handleId, UInt32 fvid2Fmt) { Int32 fmt; Int32 dssVidPipe, dssWbPipe; dssVidPipe = VpsHal_dssIsVidPipe(handleId); dssWbPipe = VpsHal_dssIsWbPipe(handleId); if (((Int32) TRUE == dssVidPipe) || ((Int32) TRUE == dssWbPipe)) { ...... } else if ((Int32) TRUE == (VpsHal_dssIsGfxPipe(handleId))) { switch (fvid2Fmt) { case FVID2_DF_ARGB32_8888: /*BGRA32-8888*/ fmt = 0x3; break; case FVID2_DF_BGR24_888: /*RGB24_888*/ fmt = 0x9; break; case FVID2_DF_XBGR_4444: /*RGBX12_4444*/ fmt = 0xA; break; case FVID2_DF_BGRX_4444: /*XRGB12_4444*/ fmt = 0x4; break; case FVID2_DF_BGRA16_4444: /*ARGB16_4444*/ fmt = 0x5; break; case FVID2_DF_ABGR16_4444: /*RGBA16_4444*/ fmt = 0xb; break; case FVID2_DF_BGRX16_5551: /*xRGB16-1555*/ fmt = 0xF; break; case FVID2_DF_BGRA16_5551: /*ARGB16-1555*/ fmt = 0x7; break; case FVID2_DF_BGR16_565: /*RGB16- 565*/ fmt = 0x6; break; case FVID2_DF_BGRX24_8888: /*xRGB24-8888*/ fmt = 0x8; break; case FVID2_DF_XBGR24_8888: /*RGBx24-8888*/ fmt = 0xE; break; case FVID2_DF_BGRA32_8888: /*ARGB32-8888*/ fmt = 0xc; break; case FVID2_DF_ABGR32_8888: /*RGBA32-8888*/ fmt = 0xd; break; default: fmt = BSP_EFAIL; break; } } There is BGR24_888, not RGB24_888. Ok. I have my Null Source link reconfigured with SYSTEM_DF_BGR24_888, rebuild ipu2 image, copy it on sd card, boot and got kernel panic.
[ 3.160740] Unable to handle kernel paging request at virtual address ffffffec [ 3.167992] pgd = c0003000 [ 3.170708] [ffffffec] *pgd=80000080007003, *pmd=affa6003, *pte=00000000 [ 3.177464] Internal error: Oops: 207 [#1] PREEMPT SMP ARM r 3.182972] Modules linked in: [ 3.186049] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.84-00051-gbdf179e-dirty #3 [ 3.193823] Hardware name: Generic DRA74X (Flattened Device Tree) [ 3.199942] task: c09438b8 ti: c093e000 task.ti: c093e000 [ 3.205367] PC is at iommu_fault_handler+0x18/0x14c [ 3.210271] LR is at handle_irq_event_percpu+0xb4/0x160 [ 3.215518] pc : [<c037c87c>] lr : [<c00846d0>] psr: a0070193 [ 3.215518] sp : c093fdc8 ip : c093fe08 fp : c093fe04 [ 3.227045] r10: c098d2cb r9 : eea56f00 r8 : 00000151 [ 3.232292] r7 : 00000000 r6 : 00000000 r5 : eeb04c10 r4 : eeafcc40 [ 3.238843] r3 : c037c864 r2 : c082dc58 r1 : eeb04c10 r0 : 00000000 [ 3.245399] Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel [ 3.252824] Control: 30c5387d Table: ae3be100 DAC: fffffffd [ 3.258592] Process swapper/0 (pid: 0, stack limit = 0xc093e210) [ 3.264622] Stack: (0xc093fdc8 to 0xc0940000) [ 3.268997] fdc0: c00950e0 c00961ac c009b4f0 c0506b10 ffffffff 00ffffff [ 3.277210] fde0: eeafcc40 eea56f60 00000000 00000000 00000151 eea56f00 c093fe4c c093fe08 [ 3.285424] fe00: c00846d0 c037c870 c093fe54 c093fe18 c009b4f0 c082dc6c c082dc58 c082dc30 [ 3.293635] fe20: b5fa7d86 eea56f00 eea56f60 c095d864 00000000 ee808000 c069331c c094050c [ 3.301846] fe40: c093fe6c c093fe50 c00847bc c0084628 eea56f00 eea56f60 c095d864 00000000 [ 3.310060] fe60: c093fe8c c093fe70 c0087b00 c0084788 c093b424 00000151 00000000 00000000 [ 3.318271] fe80: c093fe9c c093fe90 c0083cfc c0087a4c c093fec4 c093fea0 c0083fd4 c0083cdc [ 3.326486] fea0: c09408ec fa21200c c093fef0 fa212000 fa213000 c069331c c093feec c093fec8 [ 3.334696] fec0: c000948c c0083f7c c0010600 60070013 ffffffff c093ff24 c093ff60 c069331c [ 3.342907] fee0: c093ff4c c093fef0 c0013ec0 c0009458 00000001 00000000 fe600000 00000000 [ 3.351119] ff00: c093e000 c09404ac 00000000 00000000 c093ff60 c069331c c094050c c093ff4c [ 3.359331] ff20: c093ff2c c093ff40 c002b414 c0010600 60070013 ffffffff c00105fc c002b668 [ 3.367542] ff40: c093ff5c c093ff50 c0074f10 c00105e4 c093ff84 c093ff60 c0075170 c0074ef4 [ 3.375753] ff60: c098d2c9 c0940514 c093c5a8 c093a364 00000002 00000000 c093ff9c c093ff88 [ 3.383963] ff80: c06893ec c0074f7c c099005c c0990000 c093fff4 c093ffa0 c08e9dd4 c0689358 [ 3.392176] ffa0: ffffffff ffffffff 00000000 c08e96e8 ffffffff 00000000 00000000 c0940400 [ 3.400386] ffc0: 00000000 c092ba28 00000000 c0990214 c0940484 c092ba24 c0944b38 80007000 [ 3.408598] ffe0: 412fc0f2 00000000 00000000 c093fff8 80008090 c08e9994 00000000 00000000 [ 3.416804] Backtrace: [ 3.419275] [<c037c864>] (iommu_fault_handler) from [<c00846d0>] (handle_irq_event_percpu+0xb4/0x160) [ 3.428532] r9:eea56f00 r8:00000151 r7:00000000 r6:00000000 r5:eea56f60 r4:eeafcc40 [ 3.436356] [<c008461c>] (handle_irq_event_percpu) from [<c00847bc>] (handle_irq_event+0x40/0x64) [ 3.445263] r10:c094050c r9:c069331c r8:ee808000 r7:00000000 r6:c095d864 r5:eea56f60 [ 3.453160] r4:eea56f00 [ 3.455714] [<c008477c>] (handle_irq_event) from [<c0087b00>] (handle_fasteoi_irq+0xc0/0x194) [ 3.464271] r7:00000000 r6:c095d864 r5:eea56f60 r4:eea56f00 [ 3.469988] [<c0087a40>] (handle_fasteoi_irq) from [<c0083cfc>] (generic_handle_irq+0x2c/0x3c) [ 3.478632] r7:00000000 r6:00000000 r5:00000151 r4:c093b424 [ 3.484349] [<c0083cd0>] (generic_handle_irq) from [<c0083fd4>] (__handle_domain_irq+0x64/0xbc) [ 3.493089] [<c0083f70>] (__handle_domain_irq) from [<c000948c>] (gic_handle_irq+0x40/0x7c) [ 3.501473] r9:c069331c r8:fa213000 r7:fa212000 r6:c093fef0 r5:fa21200c r4:c09408ec [ 3.509291] [<c000944c>] (gic_handle_irq) from [<c0013ec0>] (__irq_svc+0x40/0x74) [ 3.516804] Exception stack(0xc093fef0 to 0xc093ff38) [ 3.521875] fee0: 00000001 00000000 fe600000 00000000 [ 3.530089] ff00: c093e000 c09404ac 00000000 00000000 c093ff60 c069331c c094050c c093ff4c [ 3.538300] ff20: c093ff2c c093ff40 c002b414 c0010600 60070013 ffffffff [ 3.544939] r9:c069331c r8:c093ff60 r7:c093ff24 r6:ffffffff r5:60070013 r4:c0010600 [ 3.552762] [<c00105d8>] (arch_cpu_idle) from [<c0074f10>] (default_idle_call+0x28/0x34) [ 3.560891] [<c0074ee8>] (default_idle_call) from [<c0075170>] (cpu_startup_entry+0x200/0x260) [ 3.569543] [<c0074f70>] (cpu_startup_entry) from [<c06893ec>] (rest_init+0xa0/0xa4) [ 3.577316] r7:00000000 [ 3.579873] [<c068934c>] (rest_init) from [<c08e9dd4>] (start_kernel+0x44c/0x458) [ 3.587384] r5:c0990000 r4:c099005c [ 3.590990] [<c08e9988>] (start_kernel) from [<80008090>] (0x80008090) [ 3.597545] Code: e24cb004 e24dd018 e1a05001 e5910010 (e5103014) [ 3.603664] ---[ end trace 4addc15c71dcbf82 ]--- [ 3.608300] Kernel panic - not syncing: Fatal exception in interrupt [ 3.614680] CPU1: stopping [ 3.617401] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G D 4.4.84-00051-gbdf179e-dirty #3 [ 3.626396] Hardware name: Generic DRA74X (Flattened Device Tree) [ 3.632513] Backtrace: [ 3.634986] [<c00131d4>] (dump_backtrace) from [<c00133d0>] (show_stack+0x18/0x1c) [ 3.642584] r7:ee8a9f40 r6:20010193 r5:00000000 r4:c095d5d0 [ 3.648308] [<c00133b8>] (show_stack) from [<c02b5c48>] (dump_stack+0x8c/0xa0) [ 3.655564] [<c02b5bbc>] (dump_stack) from [<c0016520>] (handle_IPI+0x184/0x198) [ 3.662989] r7:ee8a9f40 r6:00000000 r5:00000001 r4:c093b424 [ 3.668704] [<c001639c>] (handle_IPI) from [<c00094c4>] (gic_handle_irq+0x78/0x7c) [ 3.676302] r7:fa212000 r6:ee8a9f40 r5:fa21200c r4:c09408ec [ 3.682016] [<c000944c>] (gic_handle_irq) from [<c0013ec0>] (__irq_svc+0x40/0x74) [ 3.689528] Exception stack(0xee8a9f40 to 0xee8a9f88) [ 3.694601] 9f40: 00000001 00000000 fe600000 00000000 ee8a8000 c09404ac 00000000 00000000 [ 3.702813] 9f60: ee8a9fb0 c069331c c094050c ee8a9f9c ee8a9f7c ee8a9f90 c002b414 c0010600 [ 3.711023] 9f80: 60010013 ffffffff [ 3.714522] r9:c069331c r8:ee8a9fb0 r7:ee8a9f74 r6:ffffffff r5:60010013 r4:c0010600 [ 3.722346] [<c00105d8>] (arch_cpu_idle) from [<c0074f10>] (default_idle_call+0x28/0x34) [ 3.730475] [<c0074ee8>] (default_idle_call) from [<c0075170>] (cpu_startup_entry+0x200/0x260) [ 3.739125] [<c0074f70>] (cpu_startup_entry) from [<c0016108>] (secondary_start_kernel+0x16c/0x178) [ 3.748205] r7:c09902a8 [ 3.750756] [<c0015f9c>] (secondary_start_kernel) from [<8000956c>] (0x8000956c) [ 3.758180] r7:c09902a8 r6:30c0387d r5:00000000 r4:ae85d800 [ 3.763896] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
According to links_fw/src/rtos/links_common/nullSrc/nullSrcLink_tsk.c - both SYSTEM_DF_BGR24_888 and SYSTEM_DF_RGB24_888 are suppoted.
What may cuse this beavior when using BGR24_888 format?