Age | Commit message (Collapse) | Author |
|
L4.19 SCFW introduced LP mode, clk_set requires power-on,
fixed GPU govern to conform with the latest SCFW change.
remove redundant clk_set_rate in probe to fix LP clock.
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
(cherry picked from commit 7124761ebb33581f7b045712a82663ac3cd4680d)
|
|
ipu_ch_tbl.lock
In VDOA_MODE, _get_vdoa_ipu_res() would lock ipu_ch_tbl.lock mutex first,
then lock vdoa_lock mutex and finally unlock ipu_ch_tbl.lock mutex.
The vdoa_lock mutex is unlocked until put_vdoa_ipu_res(). Since the two
mutexes are not unlocked in a reversed order as they are locked, AB-BA
deadlock issue may happen as the below warning shows, which can be detected
with the debug option CONFIG_PROVE_LOCKING enabled.
[ 52.398770] ======================================================
[ 52.404957] WARNING: possible circular locking dependency detected
[ 52.411145] 5.4.24 #1477 Not tainted
[ 52.414728] ------------------------------------------------------
[ 52.420915] ipu1_task/92 is trying to acquire lock:
[ 52.425800] 81f02274 (&ipu_ch_tbl.lock){+.+.}, at: get_res_do_task+0x144/0x77c
[ 52.433050]
[ 52.433050] but task is already holding lock:
[ 52.438888] 8183189c (vdoa_lock){+.+.}, at: vdoa_get_handle+0x64/0x158
[ 52.445434]
[ 52.445434] which lock already depends on the new lock.
[ 52.445434]
[ 52.453615]
[ 52.453615] the existing dependency chain (in reverse order) is:
[ 52.461101]
[ 52.461101] -> #1 (vdoa_lock){+.+.}:
[ 52.466175] __mutex_lock+0xb8/0xaa8
[ 52.470283] mutex_lock_nested+0x2c/0x34
[ 52.474735] vdoa_get_handle+0x64/0x158
[ 52.479100] _get_vdoa_ipu_res+0x2b4/0x338
[ 52.483726] get_res_do_task+0x34/0x77c
[ 52.488092] ipu_task_thread+0x148/0xeb0
[ 52.492551] kthread+0x168/0x170
[ 52.496310] ret_from_fork+0x14/0x20
[ 52.500414] 0x0
[ 52.502779]
[ 52.502779] -> #0 (&ipu_ch_tbl.lock){+.+.}:
[ 52.508457] __lock_acquire+0x15d0/0x2588
[ 52.512995] lock_acquire+0xdc/0x280
[ 52.517103] __mutex_lock+0xb8/0xaa8
[ 52.521210] mutex_lock_nested+0x2c/0x34
[ 52.525662] get_res_do_task+0x144/0x77c
[ 52.530113] ipu_task_thread+0x148/0xeb0
[ 52.534566] kthread+0x168/0x170
[ 52.538322] ret_from_fork+0x14/0x20
[ 52.542425] 0x0
[ 52.544790]
[ 52.544790] other info that might help us debug this:
[ 52.544790]
[ 52.552797] Possible unsafe locking scenario:
[ 52.552797]
[ 52.558721] CPU0 CPU1
[ 52.563256] ---- ----
[ 52.567790] lock(vdoa_lock);
[ 52.570853] lock(&ipu_ch_tbl.lock);
[ 52.577040] lock(vdoa_lock);
[ 52.582619] lock(&ipu_ch_tbl.lock);
[ 52.586289]
[ 52.586289] *** DEADLOCK ***
[ 52.586289]
[ 52.592215] 1 lock held by ipu1_task/92:
[ 52.596142] #0: 8183189c (vdoa_lock){+.+.}, at: vdoa_get_handle+0x64/0x158
[ 52.603123]
[ 52.603123] stack backtrace:
[ 52.607493] CPU: 0 PID: 92 Comm: ipu1_task Not tainted 5.4.24 #1477
[ 52.613765] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[ 52.620298] Backtrace:
[ 52.622764] [<8010f094>] (dump_backtrace) from [<8010f3ac>] (show_stack+0x20/0x24)
[ 52.630345] r7:818641a8 r6:00000000 r5:600f0193 r4:818641a8
[ 52.636026] [<8010f38c>] (show_stack) from [<80f534d8>] (dump_stack+0xbc/0xe8)
[ 52.643261] [<80f5341c>] (dump_stack) from [<8019c8f4>] (print_circular_bug+0x1c4/0x214)
[ 52.651361] r10:a8330000 r9:ffffffff r8:a8330000 r7:a8330550 r6:81d13b1c r5:81d13ac0
[ 52.659197] r4:81d13ac0 r3:46e9f8d1
[ 52.662783] [<8019c730>] (print_circular_bug) from [<8019cb48>] (check_noncircular+0x204/0x21c)
[ 52.671492] r9:00000001 r8:81708f50 r7:00000000 r6:a8423a98 r5:a8330530 r4:a8330550
[ 52.679245] [<8019c944>] (check_noncircular) from [<8019f274>] (__lock_acquire+0x15d0/0x2588)
[ 52.687778] r8:81708f50 r7:81d13ac0 r6:00000001 r5:81e93d7c r4:a8330530
[ 52.694491] [<8019dca4>] (__lock_acquire) from [<801a0b84>] (lock_acquire+0xdc/0x280)
[ 52.702334] r10:00000000 r9:00000000 r8:00000000 r7:81f02274 r6:600f0113 r5:81708724
[ 52.710169] r4:00000000
[ 52.712717] [<801a0aa8>] (lock_acquire) from [<80f71938>] (__mutex_lock+0xb8/0xaa8)
[ 52.720384] r10:81e93d7c r9:0000f6d0 r8:81f022e8 r7:00008f50 r6:00000000 r5:ffffe000
[ 52.728219] r4:81f02240
[ 52.730765] [<80f71880>] (__mutex_lock) from [<80f72354>] (mutex_lock_nested+0x2c/0x34)
[ 52.738778] r10:00000000 r9:a8423ccc r8:81f022e8 r7:000002d0 r6:8188b6f8 r5:81f02234
[ 52.746613] r4:a4540400
[ 52.749162] [<80f72328>] (mutex_lock_nested) from [<80b8c830>] (get_res_do_task+0x144/0x77c)
[ 52.757612] [<80b8c6ec>] (get_res_do_task) from [<80b8d6a0>] (ipu_task_thread+0x148/0xeb0)
[ 52.765886] r10:a8139bd0 r9:a8423ccc r8:81f022e8 r7:a4540400 r6:81831604 r5:a454053c
[ 52.773721] r4:600f0013
[ 52.776269] [<80b8d558>] (ipu_task_thread) from [<801684c8>] (kthread+0x168/0x170)
[ 52.783849] r10:a8139bd0 r9:80b8d558 r8:81f022e8 r7:a8422000 r6:00000000 r5:a840cd00
[ 52.791684] r4:a83cc080
[ 52.794231] [<80168360>] (kthread) from [<801010b4>] (ret_from_fork+0x14/0x20)
[ 52.801460] Exception stack(0xa8423fb0 to 0xa8423ff8)
[ 52.806521] 3fa0: 00000000 00000000 00000000 00000000
[ 52.814711] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 52.822898] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 52.829521] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:80168360
[ 52.837356] r4:a840cd00
This patch corrects the locking/unlocking sequence for the two mutexes
to fix the deadlock issue.
Reviewed-by: Sandor Yu <sandor.yu@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
(cherry picked from commit c18ff376db6529818037a66b2cafaa3f512577d8)
|
|
put clk_prepare and clk_prepare into set_power function
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
|
|
When firmware exception, send error event instead of eos event,
avoid doubt or might send eos event twice(exception + parsed eos data).
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
(cherry picked from commit 2f97227dd635efa0c6ea965ab2d9f7fc9bafe9fb)
|
|
fix clk use-after-free issue
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
(cherry picked from commit 0d1b3814c976cb2148958f48c4c4f4701ced6b4e)
|
|
release clk to avoid memory leak
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
(cherry picked from commit 420a357a1b43c57383c74a548a9a3714b6da7de2)
|
|
release clk to avoid memory leak
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
(cherry picked from commit 76d95bf26376a7f774f2939052e3595b8d2aefdb)
|
|
change module device table name to fix build error as module
rename the c source name to avoid conflict with h1
release clk avoid memory leak
fix typo error in core index
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
(cherry picked from commit 099a3ae272672978b7720257f012dcf38e537dc0)
|
|
Update GPU database. And fix VSI profiler GPU hang issue, also update power management
register for VIP.
Signed-off-by: Ella Feng <ella.feng@nxp.com>
|
|
add PM QoS feature for VIP core by adding pm_qos_add_request
and pm_qos_remove_request function at set_power
Signed-off-by: minjie.zhuang@nxp.com
|
|
When suspend happen between enable-HW and wait-HW-ready, user can't
fetch correct HW registers value after resume due to power off in suspend.
So drvier should explicitly restore and restore HW registers during
suspend/resume.
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
|
|
ratio
The default aspect ratio supplied by firmware may be not correct.
And V4L2 have some ctrl interface to set it.
V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE,
V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC,
V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH,
V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT
So driver can implement these controls and supply a proper default value
vpu_windsor driver 1.0.3
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Shijie Qin <shijie.qin@nxp.com>
|
|
Make this change only for 5.5 kernel
Revert "mxc: gpu-viv: Remove dma-buf map/unmap hooks"
This reverts commit 5c6c9d8bed6d0e6adc57de9f422fd19bf8a569cd.
Date: 21 Apr, 2020
Signed-off-by: Ella Feng <ella.feng@nxp.com>
|
|
Replace ioremap_nocache() with ioremap, and use updated timespec struct instead of 32bit one.
Date: 21 Apr, 2020
Signed-off-by: Ella Feng <ella.feng@nxp.com>
|
|
Upstream removed 32bit timespec to deal with y2038 issue. Update MXC
drivers to deal with the change.
Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
|
Cope with upstream change 4337ebbbb ("dma-buf: Remove kernel map/unmap hooks").
Also remove the support for older kernel versions as it is not the goal
of this tree.
Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
|
Cope with upstream API change from commit
4bdc0d676("remove ioremap_nocache and devm_ioremap_nocache")
Signed-off-by: Li Yang <leoyang.li@nxp.com>
|
|
There are two dcp buffer case:
1. for some small resolution, the calcuated buffer size is too small.
2. after decode h264, the dcp info will be reported by the second seq hdr,
driver need calcuate the correct dcp buffer size using the second seq hdr.
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Shijie Qin <shijie.qin@nxp.com>
|
|
Need request and free MU3 in runtime. So MU3 will be in non-active
when it isn't in use.
Signed-off-by: Bing Song <bing.song@nxp.com>
Reviewed-by: Jian Li <jian.li@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
Reviewed-by: Anson Huang <Anson.Huang@nxp.com>
|
|
Fixed coverity reported issues. Needn't check if point isn't be NULL.
Remove useless code.
Signed-off-by: Bing Song <bing.song@nxp.com>
Reviewed-by: Jian Li <jian.li@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
|
|
kfifo memory size must roundup to power-of-two if it is
allocated by driver. Because kfifo elements size will
roundup to power-of-two in kfifo_init(), must guarantee
allocated memory is enough.
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
|
|
fix weston build error such as:
/opt/fsl-imx-internal-xwayland/5.4-zeus/sysroots/aarch64-poky-linux/usr/include/HAL/shared/gc_hal_types_shared.h:17:10:
fatal error: gc_hal_version.h: No such file or directory
17 | #include "gc_hal_version.h"
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
Signed-off-by: Yong Gan <yong.gan@nxp.com>
|
|
Need to call mailbox's request/free channel according to runtime PM.
Ohterwise MUs power always 'on' during runtime suspend.
Remove requesting mu from probe, it will be requested through
pm_runtime_resume indirectly, so there is no need call it
directly.
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
Reviewed-by: Anson Huang <Anson.Huang@nxp.com>
|
|
Need to call mailbox's request/free channel according to runtime PM.
Ohterwise MUs power always 'on' during runtime suspend.
Remove requesting mu from probe, it will be requested through
pm_runtime_resume indirectly, so there is no need call it
directly.
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
Reviewed-by: Anson Huang <Anson.Huang@nxp.com>
|
|
Add runtime pm support in emvsim driver. Reading power mode from debug
monitor, EMVSIM_0 was on and with this patch it is lp.
Reviewed-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
|
|
Should enable clock when open_cnt = 1.
Reviewed-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
|
|
20200408
integrate vsi patch base on 6.4.0.p2 from 20200320 to 20200408
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
|
|
If firmware already finished, and output / capture already streamoff too,
v4l2_poll directly return. Avoid waiting for timeout and delay close
operation.
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
|
|
correctly handle buffers with same timestamp
The following patch of ts managet is not included,
the ts managet not correctly handle buffers with same timestamp.
Port the patch to vpu_malone.
the subentry is no longer useful, so remove it.
Author: Jian Li <jian.li@freescale.com>
Date: Wed Aug 7 11:09:34 2013 +0800
Support for rtsp streaming
1) Fix issue in timestamp manager not correctly
handle buffers with same timestamp.
2) Don't need to pause pipeline for rtsp/live streams.
pause/resume pipeline will cause pipeline freeze.
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Shijie Qin <shijie.qin@nxp.com>
|
|
for DCP instead of worst case
firmware have supplied the detailed formula to
calcuate the actually dcp buffer size.
so we can allocate dcp buffer according the resolution
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
help trace some key information
Keep up with the decoder.
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
cmd is not sent in some case
If close encoder after streamon immediately,
driver may try to stop instance before really start,
so stop cmd may be not sent,
but start cmd will be send when mem_request event is received.
It'll led to intance hang
driver version 1.0.2
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Shijie Qin <shijie.qin@nxp.com>
|
|
20200320
integrate vsi patch base on 6.4.0.p2 from 20200306 to 20200320
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
|
|
As eos event, when receive res change event from FW,
don't send it to framework until dst done_list is empty.
Avoid to framework ignore a few decoded frames.
Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
|
|
virtual memory instead of dma
only cpu will access the v4l2 buffer of output stream,
so there is no need for allocate dma for it
use virtual memory can decreate the usage of dma,
and won't bring side effort
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
h264_v4l2m2m encoder
set the last_buffer_queued flag
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
h264_v4l2m2m encoder
1.calcuate a timestamp for the eos frame
2.send eos event after all frames are dequeueed
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
decoder
supply a default sizeimage for output
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
Suggest to use vmalloc for fifo entity.
Then use kfifo_init to init the fifo structure.
Then we do not have to require contiguous memory from buddy,
especially in a high pressure of memory resource.
Signed-off-by: Ming Qian <ming.qian@nxp.com>
|
|
Fixed coverity reported issues. Needn't check if point isn't be NULL.
Signed-off-by: Bing Song <bing.song@nxp.com>
Reviewed-by: Jian Li <jian.li@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
|
|
update gc_feature_database.h file for patch_base_on_6.4.0.p2_from_20200227_20200306
update gc_hal_enum.h for fixing R/B swap issue with 2D HWC composition on m865
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
|
|
Add suspend related operation:
- add ioctl 'HX280ENC_IOCG_EN_CORE' to trigger HW in kernel
- backup/restore HW registers only after frame ready interrupt received
- notify application re-config HW to avoid unexpected HW behavior
Signed-off-by: Zhou Peng <eagle.zhou@nxp.com>
|
|
vpu-ts will in active state when it isn't be using. decrease the
usage count to fix it.
Signed-off-by: Bing Song <bing.song@nxp.com>
Reviewed-by: Jian Li <jian.li@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
Reviewed-by: Anson Huang <Anson.Huang@nxp.com>
|
|
update gc_feature_database.h file for patch_base_on_6.4.0.p2_from_20200221_20200227
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
|
|
mbi buffer
If allocate mbi buffer and free mbi buffer is out of sync.
The buffer status may be incorrect, and led to unpredictable result
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Acked-by: Shijie Qin <shijie.qin@nxp.com>
|
|
Add build for XUVI/PPM.
Signed-off-by: Bing Song <bing.song@nxp.com>
Reviewed-by: Jian Li <jian.li@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
|
|
Initial version of XUVI/PPM driver source code. The driver is based
on DVB core. It will work with XUVI/PPM FW to provide TS stream
filtering and demux.
Signed-off-by: Bing Song <bing.song@nxp.com>
Reviewed-by: Jian Li <jian.li@nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
|
|
MMU enable shift mapping for the reserved memory from 4GB above range,
4GB above address is truncated for mtlb offset falling into dynamic area,
need check shift mapping to avoid dynamic error for the truncated mtlb.
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
|
|
support memory-region for gpu reserved memory from DTS,
keep contiguous_mem compatibility if no memory-region.
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
|
|
Upgrade gc_feature_database.h for 865 feature.
Add copyright in gc_feature_database.h
Signed-off-by: Minjie Zhuang <minjie.zhuang@nxp.com>
|