Commit Graph

218 Commits

Author SHA1 Message Date
Govindaraj Rajagopal
29d10ac07b video: driver: cleanup driver remove sequence
Remove deinit sequence calls and register devm
managed callbacks, so that kernel can invoke
then, when dev scope ends and cleansup all
associated resources.

Change-Id: I729fd21fe32d9f39240d0b743f910409d93a00c5
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2023-06-13 13:17:23 +05:30
Vedang Nagar
3018f2c1d3 video: driver: Update session priority setting
Modify session priority controls -
  ___________________________________________________________
 |  Description    |    HAL Value     |Driver value|FW Value|
 |_________________|__________________|____________|________|
 |Critical Priority| Vendor Extension | Via control|   0    |
 |      RT         |        0         |      0     |   1    |
 |      NRT        |     -1 to -4     |     1-4    |  2-5   |
 |_________________|__________________|____________|________|

Change-Id: I7b28109bde3968f38c2e3cc42cf4cf5dd195cc10
Signed-off-by: Vedang Nagar <quic_vnagar@quicinc.com>
2023-05-23 20:58:04 +05:30
Ankush Mitra
2468a6c91b video: driver: separate i/o subscribe prop codec wise
Separate i/o subscribe prop codec wise.

Change-Id: Ia7f63b571142507eb4d7d5ea1c0197aa74679448
Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
2023-04-28 22:31:19 +05:30
Govindaraj Rajagopal
c4f5dc6069 video: driver: fix queuing too many output buffers to firmware
Client is setting NV12 fmt as OP format before initial reconfig
So during input port stream_on, subscribe_input_property is
failing due to ubwc check(NV12 fmt), so DPB_LIST cap is getting
disabled, but later client is setting NV12C during reconfig.

So msm_vdec_release_nonref_buffers() during qbuf is bypassed and
release cmd is never sent to fw for pending ro buffers. Infact
entire RO handling at driver side is disabled.

Looks like due to some reason client was not requeueing same
buffers at same slot, So eventually number of pending RO buffers
increasing over the time. Once count shoots more than 256 fw
assertion happens and i.e leading to system error.

Remove UBWC check while subscribing input port properties, so
DPB_LIST willbe subscribed always and avoids above mentioned
issues.

Change-Id: I57ea0ea637ae3a57fcad430b212dcdb10f8e6d0f
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2023-04-18 16:32:10 +05:30
Megha Byahatti
9c8c04c7b3 video-driver: Move decoder port PSC and properties to platform data
- Add changes in platform/waipio.c to fix failure
in Upstream decoder usecase

Change-Id: Iea470afadb5b489ac28cd3b0b36c0caf8528be14
Signed-off-by: Megha Byahatti <quic_mbyahatt@quicinc.com>
2023-04-05 15:21:40 +05:30
Akshata Sahukar
33d0b20141 video: driver: Add support for Synx V2 fences
Add Synx V2 fences support to improve latency
in video decode usecases.

Change-Id: If21f8b65895364a804f8e03580b09c44b377c199
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2023-03-17 13:59:37 -07:00
Govindaraj Rajagopal
c3c85e9653 video: driver: remove config dependencies
remove all conditional compilation in video driver.
With this change, all files willbe always compiled
and will be available in final kernel object file.

Change-Id: I9843c246e23bd1ee4fb8918e5cfa840e2defd432
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2023-02-21 14:33:41 +05:30
Dikshita Agarwal
c1d99709ca video: driver: fix __set_clk_rate for upstream
In downstream, driver vote for VIDEO_CC_MVS0_CLK_SRC which
needs a multiplication factor of 3 to be applied to
required freq while on upstream we vote for branch clk
i.e. VIDEO_CC_MVS0_CLK hence this multiplication factor is
not needed.

Change-Id: I43131558b3882da303cfaa9bdb5d76080a83fc42
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2023-02-13 15:56:36 +05:30
qctecmdr
305cdd6d2f Merge "video: driver: Restrict all intra encode support to 4k@30 fps" 2023-02-09 17:47:32 -08:00
Dikshita Agarwal
5cd85bc93c video: platform: taro: add default frame/operating rate
Add default values for frame rate and operating rate for
decoder.

Change-Id: I0c9ed12fafd4655043bc408d7cee976278412a8f
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2023-02-08 16:54:23 +05:30
Akshata Sahukar
5f648c7f84 video: driver: Restrict all intra encode support to 4k@30 fps
Restrict all intra encode support to 4k@30 fps from 4k@60 fps.

Change-Id: If77d391ccfe4453fc37de369a9ca5923a39c9c26
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2023-02-06 16:33:41 -08:00
Dikshita Agarwal
a4d2b2d178 video: driver: remove dynamic layers and bitrates support for taro
Remove support for dynamic layers and bitrates for taro similar
to other platforms.

Change-Id: Ic316d9d566507ae924cff7a1ded10bcdd1f115e4
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2023-02-06 17:37:01 +05:30
Govindaraj Rajagopal
ab9b1a112b video: driver: add power domain and opp table support for video
Added changes to support generic power domain and opp table.
This is an alternative for downstream regulator framework.

power domain can be enabled using below dtsi entries.

power-domains =
    <&videocc MVS0C_GDSC>,
	<&videocc MVS0_GDSC>,
	<&rpmhpd SM8450_MXC>,
	<&rpmhpd SM8450_MMCX>
power-domain-names =
    "iris-ctl", "vcodec", "mx", "mmcx";

Power domain handles willbe parsed at driver side using below api's.
   - dev_pm_domain_attach_by_name()
   - devm_pm_opp_attach_genpd()

devm_pm_opp_attach_genpd() provides consumer virtual device handles
and i.e linked to core->dev using device_link_add().

MXC, MMCX rails wilbe powered up by scaling desired rate using
dev_pm_opp_set_rate().

Change-Id: I3d73434cb772078f031aec7cadc2d42ab930edd0
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2023-01-18 16:44:23 +05:30
Darshana Patil
ea34534af0 video: driver: update copyright markings to 2023
update copyright markings to 2023 in all files.

Change-Id: I6842d56c4a8fff6a7a93d0c1d4bc049041297b02
Signed-off-by: Darshana Patil <quic_darshana@quicinc.com>
2023-01-13 14:58:17 -08:00
Darshana Patil
a0082a4c81 video: driver: amend xo reset clock as shared resource
Use devm_reset_control_get_exclusive_released() instead of
devm_reset_control_get() to get the reset control of video_xo_reset
clock as it is shared reset clock between eva and video drivers.
Use reset_control_acquire() before assert and reset_control_release()
after de-assert video_xo_reset clock to avoid eva driver operating on
it in parallel.

Change-Id: I4936ed7a4556bb56d4b28546084fc877080308ef
Signed-off-by: Deepa Guthyappa Madivalara <quic_dmadival@quicinc.com>
Signed-off-by: Darshana Patil <quic_darshana@quicinc.com>
2023-01-05 09:58:30 -08:00
Megha Byahatti
1ce3863b21 video: driver: add database file for upstream taro
Add database file for taro prepared based on upstream.
This file won't be compiled for Android builds.

Change-Id: I6804654b0574f4cc42d90278e4a022482c27ce99
Signed-off-by: Megha Byahatti <quic_mbyahatt@quicinc.com>
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2023-01-04 00:07:33 +05:30
Ankush Mitra
bd1cd4368b video: driver: Prepare dependency list without parent
This is change 2 of the Prepare dependency list without
parent change.
In this change we remove all parent information from
the CAP database.

Change-Id: Ie0b878050ae2d24e3c1a41cbd579ef0f19d42250
Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
2022-12-13 19:10:18 +05:30
Ankush Mitra
2c39d5b91b video: driver: prepare dependency list without parent
Prepare dependency list only using children.

Change-Id: Id79487825fed1f121821126589594b64820c85d3
Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
2022-12-13 18:50:13 +05:30
Anshul Agarwal
a51bbd6445 video: driver: Remove slice interface capability
Removed slice interface capability for Kalama and taro.

Change-Id: Id7e90eff7457d004d70ba885af81a33e1feb7bb3
Signed-off-by: Gaviraju Doddabettahalli Bettegowda <quic_gdoddabe@quicinc.com>
2022-11-15 10:00:09 -08:00
Ankush Mitra
c1bb733a6b video: driver: Remove unused capabilities
Cleanup of unused capabilities from
platform caps list.

Change-Id: I98f4beb96f41d2b8a3b4342f7d453a6abc046e55
Signed-off-by: Vedang Nagar <quic_vnagar@quicinc.com>
Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
2022-11-07 21:08:52 +05:30
Govindaraj Rajagopal
ca9cc59d28 video: driver: add additional platform_data support
Add additional platform_data support for waipio,
pineapple, kalama, anorak targets.

Change-Id: I2def953c88eb4ba41de270bf208da112d4e547bf
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2022-10-18 00:13:22 +05:30
Akshata Sahukar
85d79a7a23 video: driver: remove input meta via request support
remove input meta via request support

Change-Id: If2a504455e1899c4cefb2a9142f7a92db02a45f2
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2022-09-20 11:07:39 -07:00
Akshata Sahukar
b1dfbad4a4 video: driver: Introduce SUPPORTS_REQUESTS cap
Introduce SUPPORTS_REQUESTS cap to have different caps support
for upstream and downstream driver.

Change-Id: Ib8bae21ba3fa6d65236954e0728fa30e20d7b375
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2022-09-13 14:29:18 -07:00
qctecmdr
e072a88b28 Merge "video: driver: Introduce CAP_FLAG_META flag for metadata caps" 2022-09-08 18:36:14 -07:00
Akshata Sahukar
6b5c62db0c video: driver: Introduce DEVICE_CAPS cap in core database
Introduce DEVICE_CAPS capability to have different caps support
for upstream and downstream driver.

Change-Id: Ife73ab8c3b6ef9b47ef844883d9fa18e469d9188
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2022-09-08 16:02:13 -07:00
Akshata Sahukar
f37cc5fe6c video: driver: Introduce CAP_FLAG_META flag for metadata caps
Introduce CAP_FLAG_META flag to differentiate metadata caps
from non metadata caps.

Change-Id: I7a3d2c5fb952e5d829002a04d11fa7b05b2c9297
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2022-09-06 13:42:20 -07:00
qctecmdr
bffb7c6070 Merge "msm: vidc: Fix for slice mode configuration" 2022-08-23 21:07:43 -07:00
Manikanta Kanamarlapudi
5a0859f15d msm: vidc: Fix for slice mode configuration
When layers are enabled, bitrates are set layerwise.
Need to add the cumulative layer bitrates and calculate
bytes per slice accordingly.

Change-Id: I17616a3b4f73d33c32badbbf8b9aacb60123f54a
Signed-off-by: Manikanta Kanamarlapudi <quic_kmanikan@quicinc.com>
2022-08-22 14:00:42 -07:00
Darshana Patil
87557615b9 video: driver: add dynamic_allowed flag in database
add the missing dynamic_allowed flag for dynamic controls
in the database.

Change-Id: Icbdac824d668f2c0fdd86af8a1e5a4a4dd25a160
Signed-off-by: Darshana Patil <quic_darshana@quicinc.com>
2022-08-11 12:19:30 -07:00
Gaviraju Doddabettahalli Bettegowda
9789b56a49 video: driver: add change to support slice mode decode
Added new capabilty changes to support slice based decoding.

This feature basically enables to decode the given input in terms of
slices and deliver single output to the higher layers when all slices
decoded in a frame.
When HW receives the slices then it will start decoding the slices,
instead of waiting for all the slices belongs to same frame.
So this will help to achieve lower decode latency.

Change-Id: Id107b34baba6d7b4a88238e232e8bf4a0fd6e58e
Signed-off-by: Gaviraju Doddabettahalli Bettegowda <quic_gdoddabe@quicinc.com>
2022-08-01 17:53:54 -07:00
Renjiang Han
da980f7582 video: driver: Set the fps of vp9 to the standard value
180fps is not a standard value, so we need to change
MAXIMUM_OVERRIDE_VP9_FPS to 200.

Change-Id: Ia32fc20598b8a2908ec3057dd0b00b40ea429b42
Signed-off-by: Renjiang Han <quic_renjiang@quicinc.com>
2022-08-01 17:20:14 -07:00
Dikshita Agarwal
ea38b901b7 video: driver: update msm_media_info to use vidc colorformat
Update all functions in msm_media_info.h to use vidc color formats
instead of v4l2 color formats macros to restrict the usage of private
color format defines in only helper functions.

Change-Id: Ib308c76af7b16ddac93023202191a47b21d68f5c
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2022-07-27 15:40:05 +05:30
Dikshita Agarwal
69d0c83f55 video: driver: split control code
Split control code into msm_vidc_control.c and
msm_vidc_control_ext.c files.

Change-Id: I95f13d66f33fb75da4ebaa08e24bf31fe5de55b4
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2022-07-12 12:15:54 +05:30
Vedang Nagar
2eacac6058 video: driver: Modify Min QP in CAP_TO_8BIT_QP macro
For HEVC 8 bit usecase, QP values are being capped
from [-11,51] to [1,51]. Modifying the same in
CAP_TO_8BIT_QP macro.

Change-Id: Id17fab4c62770140131f0f8454fc480090732d0b
Signed-off-by: Vedang Nagar <quic_vnagar@quicinc.com>
2022-06-24 00:38:18 +05:30
Vedang Nagar
9f8cff04a3 video: driver: Modify Min QP for 8 and 10 bit usecase
As part of firmware stress test with QP range of [0, 5],
FW gets a divide by zero exception with QP 0, and RC
validation happens with QP range of [1, MaxQP].
Modifing Min QP from 0 to 1 for 8 bit and from
-12 to -11 for 10 bit usecases to avoid multiple FW issues.

Change-Id: I29d8fd785cfafbcb1b73984b3f79900307c22c10
Signed-off-by: Vedang Nagar <quic_vnagar@quicinc.com>
2022-06-24 00:23:12 +05:30
Renjiang Han
6bf3bcb9cc video: driver: vp9 1080p decoder needs to reach 180fps
cts requires vp9 1080p decoder to achieve 180fps on AndroidT.

Change-Id: I68f53a661cb9644dee085652e19962e3bac132c4
Signed-off-by: Renjiang Han <quic_renjiang@quicinc.com>
2022-06-20 19:13:01 +08:00
Vedang Nagar
cbfbff897a video: driver: Add missing capabilites
Add mising capabilites in msm_vidc_waipio.c
for the changes done in msm_vidc_kalama.c

Change-Id: Idc75533162c977333efb4caec992ee13408ce422
Signed-off-by: Vedang Nagar <quic_vnagar@quicinc.com>
2022-06-06 14:21:27 +05:30
Akshata Sahukar
5713e9a303 video: driver: fix slice mode support
Allow client to set slice mode control to slice off for
HEIC codec.

Change-Id: Iffc8be23990a5dad451550cccb8236cc32951b2a
Signed-off-by: Akshata Sahukar <quic_asahukar@quicinc.com>
2022-05-31 14:36:04 -07:00
Vikash Garodia
5a7898589e video: driver: keep default complexity as 50
Complexity parameter defines the encoding tools used
during an encode session. Higher the complexity implies
more quality with advance encoding tools used.
Keeping the default value as moderate or acceptable
range.

Change-Id: I3ee66d3a6612d5d60cd63a0698a4248f48ee8e2d
Signed-off-by: Vikash Garodia <quic_vgarodia@quicinc.com>
2022-05-13 09:55:40 +05:30
Vikash Garodia
e3da5c43e2 driver: video: Add critical priority and reserve duration
Critical priority - A video session which is prioritized above
all concurrent sessions. Such sessions have low latencies and
at the same time they cannot be rejected due to overload.
Reserve duration - Duration by which a session reserves the
video hardware for processing frames from that session.
Both the above aspects are implemented with these changes.

Change-Id: I58aef5f239e5ee106201d6819d2228784f0f0ad0
Signed-off-by: Vikash Garodia <quic_vgarodia@quicinc.com>
2022-05-02 11:17:18 +05:30
Govindaraj Rajagopal
f47f897e4a video: driver: split platform database entries into 2 parts
Divided database entries into 2 parts

[1] struct msm_platform_inst_capability -> it tracks cap_id,
domain, codec, min, max, step, default, v4l2_id, hfi_id, flags.
[2] struct msm_platform_inst_cap_dependency -> this will track
cap_id, domain, codec, parents, childrens, adjust and set
callbacks.

It will help to reduce number of database entries.

Change-Id: I692968b0f6804b45371e8cf4af6407e57df54bb9
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2022-04-12 15:25:59 +05:30
Govindaraj Rajagopal
a820f65654 video: driver: fix corner cases in caps_list preparation
during opt_list iteration, eligible node gets added into
root_list but if incase that node is having children then
child nodes were not getting added into opt_list. So added
change to address this corner case.

Change-Id: Ie402a9d57b5b00cb94ef30e2345c8c4580fc8f69
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
2022-04-11 14:42:38 +05:30
Mahesh Kumar Sharma
508f4a0282 video: driver: inline preprocessing improvement
For VPSS, FW requests more bandwidth from HW.
In order to support inline processing, FW introduced
request preprcess property.

Enble this property only when following conditions are met:
- CAC-BRS is required
- don't have EVA stats.
- Upto 4k@60 fps, max( frame rate, operating rate) <= 60

Change-Id: I3cf83483d9320e5dfe20617b37a54b9d5fbcffd8
Signed-off-by: Mahesh Kumar Sharma <quic_smahesh@quicinc.com>
2022-04-08 18:52:52 -07:00
Deepa Guthyappa Madivalara
fdef18ef50 video driver: remove session priority handling
1. Removes depenceny of priority from frame rate
    and operating rate.
2. Removes changing priority from s_param

Change-Id: Iec51173eab5a3d59b841315549d1420df422d37f
Signed-off-by: Deepa Guthyappa Madivalara <quic_dmadival@quicinc.com>
2022-04-06 09:22:38 -07:00
qctecmdr
3183f5831b Merge "video: driver: keep all platform common api in a single file" 2022-04-01 11:33:47 -07:00
Ankush Mitra
6d48bb4854 video: driver: keep all platform common api in a single file
update msm_vidc_platform.c to keep all common API's
and macro's in a single file to avoid redundancy.

Change-Id: I43869f54514ab8c531b6e27b84ce0a6c1f1806ce
Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
2022-04-01 01:29:40 -07:00
Dikshita Agarwal
8f0e12cc93 video: driver: add support for cyclic intra refresh
Currently driver supports only random intra refresh, extend
it to support cyclic intra refresh too.
Cyclic intra refresh is supported dynamically as well.
- If intra refresh type is set and num of LCU’s to be refreshed
  are non-zero before session start, intra refresh will be enabled
  throughout the session.
  Any further dynamic settings in the number of LCU’s including 0
  will be honored accordingly.
- If intra refresh type is set and num of LCU’s to be refreshed are zero
  before session start, intra refresh will be disabled.
  When client sets it to non-zero value dynamically, driver will set
  HFI_PROP_REQUEST_SYNC_FRAME with
  HFI_SYNC_FRAME_REQUEST_WITH_PREFIX_SEQ_HDR.
  Driver needs to send HFI_PROP_REQUEST_SYNC_FRAME only at time of
  CIR Enable, no need to send at time of disable/enable again.

Change-Id: I10a2fb22d131353721ee658213ed807ce0794009
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
2022-04-01 11:08:19 +05:30
qctecmdr
f1918f5314 Merge "video driver: calculate power based on max rate" 2022-03-31 07:49:35 -07:00
qctecmdr
812f40eff9 Merge "video: driver: use custom v4l2 ctrls in place of S/G_PARM on decoder" 2022-03-30 15:32:02 -07:00
Deepa Guthyappa Madivalara
ab684e15f6 video driver: calculate power based on max rate
1. Remove load based admission control for decoder.
2. For decoder, use max of frame rate, operating rate,
    timestamp rate and input rate for power calculations.
3. For encoder, use max of frame rate and operating rate
    for power calculations.

Change-Id: Ibdb2d4b29438d7f656a27771953d10e0a0e72edd
2022-03-30 13:03:24 -07:00