Commit Graph

292 Commits

Author SHA1 Message Date
Mihir Ganu
a15a1ac976 video: driver: Reduce log level for non-fatal logs
Reduce the log level for non-fatal logs to avoid
log flood.

Change-Id: I170102d6ed457a1fb88dd8b81fc631eddc17a235
Signed-off-by: Mihir Ganu <mganu@codeaurora.org>
2021-04-12 20:07:50 -07:00
qctecmdr
7d77efb5bc Merge "video: driver: handle dpb list property" 2021-04-12 14:33:17 -07:00
qctecmdr
bb93aa7f4b Merge "video: driver: power collapse only if no sessions present" 2021-04-09 19:15:46 -07:00
Darshana Patil
23605ffffb video: driver: handle dpb list property
- subscribe for dpb list property in combined
 mode on output port.
- copy dpb list property payload from fw to
 static array.
- using this array, mark read_only list buffers
 as non-reference if not part of array. if count
 of such buffers is greater than output min count,
 send to fw for release.
- once fw returns them, destroy these buffers.
- unmap stale output mappings due to lazy unmap feature.
- unify release internal functions into common function.

Change-Id: Id32f04efb19eecaff453cc4383ee8296a0246263
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-04-09 18:21:34 -07:00
qctecmdr
d39b4f2b7d Merge "video: driver: follow recommended reset sequence" 2021-04-09 13:21:30 -07:00
qctecmdr
5fc9f66269 Merge "video: driver: Fix buffer type and region mapping" 2021-04-09 12:35:39 -07:00
Chinmay Sawarkar
29f8295bae video: driver: Fix buffer type and region mapping
Fixed incorrect mapping and restructured code for readability.

Change-Id: Iaef5e780d168883ff2cc7b243b1bf3aa094e3df2
Signed-off-by: Chinmay Sawarkar <chinmays@codeaurora.org>
2021-04-09 10:54:14 -07:00
qctecmdr
1dff505773 Merge "video: driver: refine max_host_buffer count logic" 2021-04-09 10:18:22 -07:00
qctecmdr
fdfcdc891e Merge "video: driver: fix buffer tracking logic at reverse path" 2021-04-09 09:25:12 -07:00
qctecmdr
349ec479d9 Merge "video: driver: add support to register custom handler." 2021-04-09 02:20:18 -07:00
Govindaraj Rajagopal
58ce6211a7 video: driver: fix buffer tracking logic at reverse path
fw sent FBD with RO and host didn't requeue same buffer again,
but firmware still holds RO reference. In that case, if stop
cmd issued at output port, firmware will FBD once again w/o
RO. So at that time wrong buffer will be picked from list, if
tracking is based on index.

To handle that special case, for decoder alone using device
addr & data_offset for identifying the node in reverse path.

Change-Id: I3d8cb0b4b100fd44be30e576ae602950650747a4
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-09 12:18:40 +05:30
Govindaraj Rajagopal
6791a81197 video: driver: refine max_host_buffer count logic
- added max_host_buffer_count for decoder input & output.
- increased buffer count for image_session & encode
  batching case.

Change-Id: I4edf1c3a0953e38d6f84f554ab78e624d39a7306
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-09 11:24:36 +05:30
Vikash Garodia
d336ae5365 msm: vidc: Fix LLCC bandwidth for non realtime session
For non real time sessions, LLCC bandwidth should be voted
to maximum bandwidth.

CRs-Fixed: 2919988
Change-Id: I37217e71634aed298c59533b7cc2f0aa32697752
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
2021-04-09 10:54:52 +05:30
Govindaraj Rajagopal
f6642e3e67 video: driver: add support to register custom handler.
Need to increase debug timeout incase more debug logs were
enabled. This is to avoid sync cmd timeout.

module_param_cb supports to register custom set/get callbacks.
So using this feature to increase various timeout values,
incase more logs were enabled.

Change-Id: I194c077c2ba00af2403d487a3dcfbb48f119b478
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-09 10:46:22 +05:30
Maheshwar Ajja
d0730ea586 video: driver: follow recommended reset sequence
Assert all the reset clocks and then deassert.
Also increase sleep time between assert and deassert.

Change-Id: If5f76c677cd01a3fe37bf2704b7a1c210f6e9fec
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-04-08 16:45:33 -07:00
Akshata Sahukar
1b42ed0a67 video: driver: adjust/set mark/use ltr dynamically only
Avoid adjusting, sanitizing, and setting mark and use ltr
controls to fw for input port static case.

Change-Id: I8ac7fd9537ff0c5ddce0ff0f4d0337cb19dd83d2
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-08 13:33:02 -07:00
Maheshwar Ajja
ae79a4b181 video: driver: power collapse only if no sessions present
Skip power collapse if any sessions are present in driver.

Change-Id: I40003c118b815d2cd07ce44e06bfa3c08182ab3f
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-04-08 12:48:16 -07:00
Akshata Sahukar
7c612dd033 video: driver: Deprecate private ctrls and use upstream ctrls
Remove private ctrl definitions, and use upstream ctrls
in source code.

Change-Id: Ib12cae5b78be69936bf0f97ca09483f5baa60350
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-08 12:10:39 -07:00
Manikanta Kanamarlapudi
d77900d9ab video: Fix QP issues
For max-qp, set_min_qp is called,
correct the same.

Change-Id: I2ff7d6557a033fa45343b131fd68cae1eaf6d796
Signed-off-by: Manikanta Kanamarlapudi <kmanikan@codeaurora.org>
2021-04-07 13:12:04 -07:00
Govindaraj Rajagopal
c446124753 video: driver: add frame interval enum support.
Added support for VIDIOC_ENUM_FRAMEINTERVALS to provide
supported frame intervals range for a given resolution.

Change-Id: I51174634739dd1141d308ba9bfd1cf3720b6ca42
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-07 09:42:18 +05:30
qctecmdr
deb6f40b1d Merge "video: driver: skip core deinit if deinited already" 2021-04-06 14:33:03 -07:00
Akshata Sahukar
ceab7d9dab video: driver: Do not combine PREPEND_SPSPPS_TO_IDR with SEPARATE/JOINED_WITH_1ST_FRAME
Combination of PREPEND_SPSPPS_TO_IDR with V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE or
V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME is not supported.
Hence, prioritize PREPEND_SPSPPS_TO_IDR over SEPARATE/JOINED_WITH_1ST_FRAME
to set to fw.

Change-Id: Ia23569c046c95889d5eabbe2142d6fd2c69d032a
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-06 12:05:17 -07:00
Maheshwar Ajja
e6e1004dd5 video: driver: skip core deinit if deinited already
Do not try to deinitialize core if core was already
in deinited. Also in failed cases skip calling
venus_hfi_core_deinit() from within venus_hfi_core_init()
as the caller will anyway call venus_hfi_core_deinit().

Change-Id: Idda3d989a8eb500b0d5392a1eac65109e3d73b81
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-04-06 11:20:50 -07:00
qctecmdr
d0d96b1076 Merge "video: driver: Always set metadata delivery/subcribe commands to fw" 2021-04-05 21:38:36 -07:00
qctecmdr
c2501b7b53 Merge "video: driver: optimize thumbnail input buffer count" 2021-04-05 14:47:48 -07:00
qctecmdr
67c1d2454d Merge "video: driver: enable buffer pool for mostly used structures" 2021-04-05 14:47:48 -07:00
qctecmdr
07b361166a Merge "video: driver: Modify decode order and some misc changes" 2021-04-05 14:16:20 -07:00
Govindaraj Rajagopal
a13f0e1416 video: driver: enable buffer pool for mostly used structures
Enabled recycling for below structure types.

- struct msm_vidc_buffer
- struct msm_vidc_alloc
- struct msm_vidc_map.

Change-Id: I062abef85db24385745119b821f87e5b72a4e835
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-05 19:04:55 +05:30
Akshata Sahukar
376e52f50c video: driver: Always set metadata delivery/subcribe commands to fw
Set metadata delivery/subscribe commands to fw even when
delivery/subcribe metadata list is empty to ensure disabling
of needless metadata.

Change-Id: Ifbc8cfbe8911bf3318c6f85f0f6823243f7c6e67
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-02 14:41:01 -07:00
Akshata Sahukar
712640a1a8 video: driver: Modify decode order and some misc changes
- Account for V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY
  ctrl value to decide HFI_PROP_DECODE_ORDER_OUTPUT property value.
- Set encoder run time properties on raw port
- Some logging changes.

Change-Id: I5eef81b484e81b69031854a3a8665de4be7f98f9
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-04-02 14:24:46 -07:00
Govindaraj Rajagopal
d6890cd14a video: driver: print buffer_name instead of hex value
Handled below items as part of this change.

- print buffer_name instead of hex value.
- enable dcvs only for realtime sessions.
- enhanced max_input_data_size handling at
  msm_vidc_scale_power.

Change-Id: If5ac810f4e020bee54364161596c5547af94161a
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-04-03 00:43:18 +05:30
Maheshwar Ajja
459b93d5f3 video: driver: amend get and put dmabuf calls
Call get dmabuf before adding to buffers and maps list
similarly call put dmabuf before remvong from buffers
and maps list.

Change-Id: I6875ffb0ed8a144993db0dfdef84333a49521999
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-04-02 11:23:53 -07:00
Shi Zhongbo
34ed55ecd1 video: driver: optimize thumbnail input buffer count
Update thumbnail input buffer count to 1 after recieving
thumbnail enable control.

Change-Id: I9341d34d3427c00fd6792f47c947bf4b12966a39
Signed-off-by: Shi Zhongbo <zhongbos@codeaurora.org>
2021-04-02 00:35:13 -07:00
Darshana Patil
19cdce1711 video: driver: skip lazy unmap for dec output buffers
- add support to skip lazy unmapping for decoder
  output buffers only. Map twice for these buffers.
- v4l2 client owned RO SMMU mapped buffers are
  maintained separately in read_only list.
- For FBD with RO flag from fw, add buffer to read_only
  list. Else remove from this list.
- During FTB, if buffer present in read_only list,
  add RO flag to hfi buffer and queue to fw.
- During streamoff output, unmap all buffers except
  those present in read_only list.
- During close, unmap completely and clean up read_only
  list, output list.

Change-Id: Iacee7d298dfbff0b9cb6f17dff27ad98574b489b
Signed-off-by: Darshana Patil <darshana@codeaurora.org>
2021-04-01 12:03:21 -07:00
qctecmdr
ced61b7249 Merge "video: driver: Add support to deliver HFI_PROP_BUFFER_TAG via FTB" 2021-03-31 21:14:15 -07:00
Akshata Sahukar
89e7e48231 video: driver: Add support to deliver HFI_PROP_BUFFER_TAG via FTB
Add support to deliver HFI_PROP_BUFFER_TAG via FTB metadata buffer
to receive HFI_PROP_DPB_TAG_LIST from fw via FBD metadata buffer.

Change-Id: Id9eeee26135379975f55923505d9c91905fa0b9e
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-31 19:09:10 -07:00
Maheshwar Ajja
10ac73594f video: driver: skip zero length internal buffers allocation
Few internal buffers size can be zero based on configuration
(such as BIN buffers size is zero for interlace bitstream)
and hence skip allocation instead of returning error.

Change-Id: Id157115d8d6eb3f64154f3b18ec3843f289164ef
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-03-31 18:35:46 -07:00
qctecmdr
bc24301695 Merge "video: driver: access buffers list under lock only" 2021-03-30 18:41:03 -07:00
Maheshwar Ajja
e1af4fd098 video: driver: access buffers list under lock only
Do not access buffers list of an instance without
acquiring its instance lock in msm_vidc_set_clocks()
and msm_vidc_set_buses().

Change-Id: Ic7e8e15eaddca3b77bd4eccc6b728de20d3bcc78
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-03-30 16:44:03 -07:00
Akshata Sahukar
925c0b1a58 video: driver: Allow HB layer encoding type
- Allow HB layer encoding type
- fix dynamic setting of I Frame QP and Peak Bitrate.

This reverts commit 4ef2b8899d.

Change-Id: I4d63dd424c68d388709684c649ef492ce2489caa
2021-03-30 16:15:14 -07:00
Govindaraj Rajagopal
78b1491ee1 video: driver: enable dcvs - power feature
Enable/disable dcvs based on below settings.

- core supports dcvs
- core_clock_voting is set: disable
- encode_batching(superframe): disable
- decode_batching: disable
- thumbnail session: disable
- image session: disable

Handle below items as part of dcvs enablement.

- skip clock scaling for inactive session.
- reset dcvs flags to 0, for encoder at dcvs_window.

Change-Id: I84e6710946bca3fa8c83178f29745d4b9afd4697
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-31 02:02:36 +05:30
Dikshita Agarwal
f3298d2fe6 video: driver: use module_param for debug logs
Introduce module_param to enable debug logs.

For general debug, use below commad:
echo 0x103f101f > /sys/module/msm_video/parameters/msm_vidc_debug

To further print bus-related logs, use below command:
echo 0x103f103f > /sys/module/msm_video/parameters/msm_vidc_debug

Change-Id: Iab735d3e7157cd78a8e5d99c4cdbb290fb36421a
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2021-03-30 11:37:21 -07:00
qctecmdr
57648d98ff Merge "video: driver: Enable Subsystem Restart (SSR) testing" 2021-03-29 11:26:15 -07:00
Mihir Ganu
113c10c489 video: driver: Enable Subsystem Restart (SSR) testing
Enable Subsystem Restart test support.
Clients can trigger SSR through debugfs as follows:

echo <trigger_val> > /d/msm_vidc/core/trigger_ssr

u64 trigger_val provides:
  /* <test_addr><sub_client_id><ssr_type>
   * ssr_type: 0-3 bits
   * sub_client_id: 4-7 bits
   * reserved: 8-31 bits
   * test_addr: 32-63 bits */

Change-Id: If23fce3084de00461f1e5cc57884e10d15ad66a9
Signed-off-by: Mihir Ganu <mganu@codeaurora.org>
2021-03-29 10:21:27 -07:00
Vikash Garodia
0017afac21 video: driver: Add handling for session priority
Following changes are added with this:
1. Handle and adjust session priority.
2. Session addmission based on priority.
3. Power (clock and bus) scaling based on priority.
4. Handle s_parm influence on priority.

Change-Id: I12dec5fb03d733f07b0b0a24b4d74d1ccd4bf791
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
2021-03-29 22:47:28 +05:30
qctecmdr
ac3350d805 Merge "video: driver: Use upstream ctrls" 2021-03-26 19:39:14 -07:00
qctecmdr
c04cf38091 Merge "video: driver: Add support to advanced bitrate ctrls" 2021-03-26 13:38:24 -07:00
Akshata Sahukar
47847faa11 video: driver: Use upstream ctrls
Remove usage of private ctrls and use upstream ctrls.

Change-Id: I137855872030822f0d6b2cd59babca3f0cc591d4
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-26 12:40:58 -07:00
Govindaraj Rajagopal
1524ddc445 video: driver: remove smmu_fault_work_handler
Remove separate fault_work_handler and print all needed
debug info as part of smmu_fault_handler callback itself,
to avoid race between fault handler invocation and core
deinit sequence.

Change-Id: Ib47e3d457a5a3e33497c71d5920382cb43baed79
Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
2021-03-26 16:37:52 +05:30
Akshata Sahukar
14efc2a0bc video: driver: Add support to advanced bitrate ctrls
Add support to below properties:
- HFI_PROP_BITRATE_BOOST
- HFI_PROP_CONTENT_ADAPTIVE_CODING
- HFI_PROP_MAINTAIN_MIN_QUALITY
- HFI_PROP_VBV_DELAY
- HFI_PROP_TOTAL_PEAK_BITRATE
- HFI_PROP_BITRATE_LAYERx.

Change-Id: I1072f97c7c202c7f4fc38c26e0ab9274ae06fce0
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
2021-03-25 14:50:20 -07:00