- 24 4月, 2022 2 次提交
-
-
由 Stanimir Varbanov 提交于
Add a helper to check supported pixel format per codec and session type. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab@kernel.org>
-
由 Vikash Garodia 提交于
During reconfig (DRC) event from firmware, it is not guaranteed that all the DPB(internal) buffers would be released by the firmware. Some buffers might be released gradually while processing frames from the new sequence. These buffers now stay idle in the dpblist. In subsequent call to queue the DPBs to firmware, these idle buffers should not be queued. The fix identifies those buffers and free them. Signed-off-by: NVikash Garodia <quic_vgarodia@quicinc.com> Tested-by: NFritz Koenig <frkoenig@chromium.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab@kernel.org>
-
- 07 3月, 2022 1 次提交
-
-
由 Ameer Hamza 提交于
The venus_helper_alloc_dpb_bufs() implementation allows an early return on an error path when checking the id from ida_alloc_min() which would not release the earlier buffer allocation. Move the direct kfree() from the error checking of dma_alloc_attrs() to the common fail path to ensure that allocations are released on all error paths in this function. Addresses-Coverity: 1494120 ("Resource leak") cc: stable@vger.kernel.org # 5.16+ Fixes: 40d87aaf ("media: venus: vdec: decoded picture buffer handling during reconfig sequence") Signed-off-by: NAmeer Hamza <amhamza.mgc@gmail.com> Reviewed-by: NKieran Bingham <kieran.bingham+renesas@ideasonboard.com> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab@kernel.org>
-
- 21 10月, 2021 4 次提交
-
-
由 Mansur Alisha Shaik 提交于
In existing implementation, driver is freeing and un-mapping all the decoded picture buffers(DPB) as part of dynamic resolution change(DRC) handling. As a result, when firmware try to access the DPB buffer, from previous sequence, SMMU context fault is seen due to the buffer being already unmapped. With this change, driver defines ownership of each DPB buffer. If a buffer is owned by firmware, driver would skip from un-mapping the same. Signed-off-by: NMansur Alisha Shaik <mansur@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
According to stateful decoder docs a fatal failure of decoding (and encoding) could be recover it by closing the corresponding file handle and open new one or reinitialize decoding (and encoding) by stop streaming on both queues. In order to satisfy this requirement we add a mechanism ins sys_error_handler and corresponding decoder and encoder drivers to wait for sys_error_done waitqueue in reqbuf. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Tested-by: NVikash Garodia <vgarodia@codeaurora.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
Add a helper to mark source and destination vb2 queues fatal unrecoverable error. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Tested-by: NVikash Garodia <vgarodia@codeaurora.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
Make the sys_error flag an atomic bitops in order to avoid locking in sys_error readers. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Tested-by: NVikash Garodia <vgarodia@codeaurora.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 08 10月, 2021 3 次提交
-
-
由 Dikshita Agarwal 提交于
- Get the min buffer count required by FW from source event change and use the same value to decide actual buffer count and for buffer size calculation. - Setup DPB and OPB buffers after session continue incase of reconfig. Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Dikshita Agarwal 提交于
Consider alignment while calculating NUM_MBS. Co-developed-by: NMansur Alisha Shaik <mansur@codeaurora.org> Signed-off-by: NMansur Alisha Shaik <mansur@codeaurora.org> Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Dikshita Agarwal 提交于
V6 HW can have vpp pipes as 1 or 4, add num_vpp_pipes to resource struture to differentiate. Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 04 8月, 2021 1 次提交
-
-
由 Mansur Alisha Shaik 提交于
Plane constraints firmware interface is to override the default alignment for a given color format. By default venus hardware has alignments as 128x32, but NV12 was defined differently to meet various usecases. Compressed NV12 has always been aligned as 128x32, hence not needed to override the default alignment. Fixes: bc28936b ("media: venus: helpers, hfi, vdec: Set actual plane constraints to FW") Signed-off-by: NMansur Alisha Shaik <mansur@codeaurora.org> Reviewed-by: NBryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 02 6月, 2021 2 次提交
-
-
由 Zhen Lei 提交于
The result of an expression consisting of a single relational operator is already of the bool type and does not need to be evaluated explicitly. No functional change. Signed-off-by: NZhen Lei <thunder.leizhen@huawei.com> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Dikshita Agarwal 提交于
Set the FW to run in low power for encoder to accommodate more session without losing much on quality. Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 06 4月, 2021 4 次提交
-
-
由 Dikshita Agarwal 提交于
Decide work mode for encoder and decoder based on different use-cases. Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NBryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Dikshita Agarwal 提交于
Set actual plane alignments to FW with HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO to calculate correct buffer size. bod: Fixed fall-through error in pkt_session_set_property_6xx() switch Ensure setting format constraints on 6xx only Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NBryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Dikshita Agarwal 提交于
- Internal buffers required by v6 are different than v4, add new list of internal buffers for v6. - Differentiate encoder/decoder buffers for 6xx Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NBryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Bryan O'Donoghue 提交于
In various places in the venus codebase we have if (IS_V4()) which takes the code down paths for 4xx silicon. This logic is broadly applicable to 6xx silicon also. In this patch we add IS_V6() to various IS_V4() decision locations. Co-developed-by: NDikshita Agarwal <dikshita@qti.qualcomm.com> Signed-off-by: NDikshita Agarwal <dikshita@qti.qualcomm.com> Signed-off-by: NBryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 27 1月, 2021 1 次提交
-
-
由 Dikshita Agarwal 提交于
- return correct width and height for G_SELECTION - update capture port wxh with rectangle wxh. - add support for HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO to set stride info and chroma offset to FW. Signed-off-by: NDikshita Agarwal <dikshita@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 13 1月, 2021 7 次提交
-
-
由 Stanimir Varbanov 提交于
Now when everything is in place wire up buffer requirements from hfi platform buffers to the buffer requirements helper. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
Now when we have hfi platform make venus capabilities an hfi platform capabilities. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
Introduce a new hfi platform to cover differences between hfi versions. As a start move vpp/vsp freq data in that hfi platform, more platform data will come later. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
For resolutions below 720p the size of the compressed buffer must be bigger. Correct this by checking the resolution when calculating buffer size and multiply by eight. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
After adding more logic in vdec buf_queue vb2 op it is not practical to have two lock/unlock for one decoder buf_queue. So move the instance lock in encoder and decoder vb2 buf_queue operations. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
In real use of dynamic-resolution-change it is observed that the LAST buffer flag (which marks the last decoded buffer with the resolution before the resolution-change event) is not reliably set. Fix this by set the LAST buffer flag on next queued capture buffer after the resolution-change event. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Alexandre Courbot 提交于
This driver uses the SG vb2 ops, but effectively only ever accesses the first entry of the SG table, indicating that it expects a flat layout. Switch it to use the contiguous ops to make sure this expected invariant is always enforced. Since the device is supposed to be behind an IOMMU this should have little to none practical consequences beyond making the driver not rely on a particular behavior of the SG implementation. Reported-by: NTomasz Figa <tfiga@chromium.org> Signed-off-by: NAlexandre Courbot <acourbot@chromium.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 14 9月, 2020 1 次提交
-
-
由 Stanimir Varbanov 提交于
Introduce a helper to set and get profile and levels which includes the translation between v4l2 ctrl ids and HFI ids. The input arguments are always in v4l2 ids space. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 01 9月, 2020 1 次提交
-
-
由 Stanimir Varbanov 提交于
Here we introduce debug prefixes for dev_dbg groups by level of importance - Venus{Low,Med,High,FW} Enabling the particular level will be done by dynamic debug. For example to enable debug messages with low level: echo 'format "VenusLow" +p' > debugfs/dynamic_debug/control If you want to enable all levels: echo 'format "Venus" +p' > debugfs/dynamic_debug/control All the features which dynamic debugging provide are preserved. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 05 5月, 2020 1 次提交
-
-
由 Stanimir Varbanov 提交于
Currently calling venus_helper_buffers_done() will return buffers to user for both capture and output queues in the same call. This is wrong because both queues are really separate and calling stop_streaming on one queue shouldn't return buffers for the other. Solve this by add a new queue type argument and fix the clients of the helper function. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 27 2月, 2020 4 次提交
-
-
由 Aniket Masule 提交于
Handle 10bit video streams in the decoder by using dithering, i.e the decoder output buffers will be in 8bit format. The runtime handling is implemented by sending v4l2 event to userspace application, then the application should stop the streaming on capture queue and initiate format negotiation, and start streaming again. Signed-off-by: NAniket Masule <amasule@codeaurora.org> Co-developed-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Aniket Masule 提交于
Presently the core (vcodec pipelines) assignment is static. Here we introduce dynamic load balancing across the cores depending on the current session load. The load on earch core is calculated and core with minimum load is assigned to given instance. This will be applicable on Venus v4 with more than one vcodec cores. Signed-off-by: NAniket Masule <amasule@codeaurora.org> Co-developed-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
Redesign core (vcodec) clock control to give the venus core more freedom to control them in order to make possible to use core selection feature on Venus IP v4. Move all clock and pmdomain functions in separate file and abstract power control with common operations per Venus IP version. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
由 Stanimir Varbanov 提交于
Instead of iterate over previously queued buffers in clock scaling code do cache the payload in instance context structure for later use when calculating new clock rate. This will avoid to use spin locks during buffer list iteration in clock_scaling. This fixes following kernel Oops: Unable to handle kernel paging request at virtual address deacfffffffffd6c Mem abort info: ESR = 0x96000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 Data abort info: ISV = 0, ISS = 0x00000004 CM = 0, WnR = 0 [deacfffffffffd6c] address between user and kernel address ranges Internal error: Oops: 96000004 [#1] PREEMPT SMP CPU: 7 PID: 5763 Comm: V4L2DecoderThre Tainted: G S W 5.4.11 #8 pstate: 20400009 (nzCv daif +PAN -UAO) pc : load_scale_v4+0x4c/0x2bc [venus_core] lr : session_process_buf+0x18c/0x1c0 [venus_core] sp : ffffffc01376b8d0 x29: ffffffc01376b8d0 x28: ffffff80cf1b0220 x27: ffffffc01376bba0 x26: ffffffd8f562b2d8 x25: ffffff80cf1b0220 x24: 0000000000000005 x23: ffffffd8f5620d98 x22: ffffff80ca01c800 x21: ffffff80cf1b0000 x20: ffffff8149490080 x19: ffffff8174b2c010 x18: 0000000000000000 x17: 0000000000000000 x16: ffffffd96ee3a0dc x15: 0000000000000026 x14: 0000000000000026 x13: 00000000000055ac x12: 0000000000000001 x11: deacfffffffffd6c x10: dead000000000100 x9 : ffffff80ca01cf28 x8 : 0000000000000026 x7 : 0000000000000000 x6 : ffffff80cdd899c0 x5 : ffffff80cdd899c0 x4 : 0000000000000008 x3 : ffffff80ca01cf28 x2 : ffffff80ca01cf28 x1 : ffffff80d47ffc00 x0 : ffffff80cf1b0000 Call trace: load_scale_v4+0x4c/0x2bc [venus_core] session_process_buf+0x18c/0x1c0 [venus_core] venus_helper_vb2_buf_queue+0x7c/0xf0 [venus_core] __enqueue_in_driver+0xe4/0xfc [videobuf2_common] vb2_core_qbuf+0x15c/0x338 [videobuf2_common] vb2_qbuf+0x78/0xb8 [videobuf2_v4l2] v4l2_m2m_qbuf+0x80/0xf8 [v4l2_mem2mem] v4l2_m2m_ioctl_qbuf+0x2c/0x38 [v4l2_mem2mem] v4l_qbuf+0x48/0x58 __video_do_ioctl+0x2b0/0x39c video_usercopy+0x394/0x710 video_ioctl2+0x38/0x48 v4l2_ioctl+0x6c/0x80 do_video_ioctl+0xb00/0x2874 v4l2_compat_ioctl32+0x5c/0xcc __se_compat_sys_ioctl+0x100/0x2074 __arm64_compat_sys_ioctl+0x20/0x2c el0_svc_common+0xa4/0x154 el0_svc_compat_handler+0x2c/0x38 el0_svc_compat+0x8/0x10 Code: eb0a013f 54000200 aa1f03e8 d10e514b (b940016c) ---[ end trace e11304b46552e0b9 ]--- Fixes: c0e284cc ("media: venus: Update clock scaling") Cc: stable@vger.kernel.org # v5.5+ Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+huawei@kernel.org>
-
- 09 10月, 2019 1 次提交
-
-
由 Mauro Carvalho Chehab 提交于
As reported by jenkins@linuxtv.org, the build with i386 fails with: ld: drivers/media/platform/qcom/venus/helpers.o: in function `venus_helper_load_scale_clocks': (.text+0x1d77): undefined reference to `__udivdi3' ld: (.text+0x1dce): undefined reference to `__udivdi3' make: *** [Makefile:1094: vmlinux] Error 1 That's because it divides an u32 bit integer by a u64 one. Reviewed-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
- 04 10月, 2019 2 次提交
-
-
由 Aniket Masule 提交于
Current clock scaling calculations are same for vpu4 and previous versions. For vpu4, Clock scaling calculations are updated with cycles/mb and bitrate. This helps in getting precise clock required. Signed-off-by: NAniket Masule <amasule@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
由 Aniket Masule 提交于
Add vpp cycles for different types of codec. It indicates the cycles required by video hardware to process each macroblock. Add vsp cycles, cycles required by stream processor. Initialize the codec data with core resources. Signed-off-by: NAniket Masule <amasule@codeaurora.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
- 02 10月, 2019 1 次提交
-
-
由 Stanimir Varbanov 提交于
This aims to add a requests for bandwidth scaling depending on the resolution and framerate (macroblocks per second). The exact value of the requested bandwidth is get from a pre-calculated tables for encoder and decoder. Acked-by: NGeorgi Djakov <georgi.djakov@linaro.org> Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
- 05 8月, 2019 4 次提交
-
-
由 Stanimir Varbanov 提交于
Cache flags, timestamps and timecode structure of OUTPUT buffers in per-instance structure array and fill correctly the same when the CAPTURE buffers are done. This will make v4l2-compliance decoder streaming test happy. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
由 Stanimir Varbanov 提交于
Correct handling of OUTPUT buffers field and make v4l2-compliance happy. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
由 Stanimir Varbanov 提交于
This refactors code for start/stop streaming vb2 operations and adds a state machine handling similar to the one in stateful codec API documentation. One major change is that now the HFI session is started on STREAMON(OUTPUT) and stopped on REQBUF(OUTPUT,count=0), during that time STREAMOFF(CAP,OUT) just flush buffers but doesn't stop the session. The other major change is that now the capture and output queues are completely separated. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-
由 Stanimir Varbanov 提交于
This adds three more helper functions: * for internal buffers reallocation, applicable when we are doing dynamic resolution change * for initial buffer processing of capture and output queue buffer types All of them will be needed for stateful Codec API support. Signed-off-by: NStanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
-