kernel_samsung_a53x/drivers/clk/qcom
Marc Gonzalez 00bbc813c2 clk: qcom: mmcc-msm8998: fix venus clock issue
[ Upstream commit e20ae5ae9f0c843aded4f06f3d1cab7384789e92 ]

Right now, msm8998 video decoder (venus) is non-functional:

$ time mpv --hwdec=v4l2m2m-copy --vd-lavc-software-fallback=no --vo=null --no-audio --untimed --length=30 --quiet demo-480.webm
 (+) Video --vid=1 (*) (vp9 854x480 29.970fps)
     Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz)
[ffmpeg/video] vp9_v4l2m2m: output VIDIOC_REQBUFS failed: Connection timed out
[ffmpeg/video] vp9_v4l2m2m: no v4l2 output context's buffers
[ffmpeg/video] vp9_v4l2m2m: can't configure decoder
Could not open codec.
Software decoding fallback is disabled.
Exiting... (Quit)

Bryan O'Donoghue suggested the proper fix:
- Set required register offsets in venus GDSC structs.
- Set HW_CTRL flag.

$ time mpv --hwdec=v4l2m2m-copy --vd-lavc-software-fallback=no --vo=null --no-audio --untimed --length=30 --quiet demo-480.webm
 (+) Video --vid=1 (*) (vp9 854x480 29.970fps)
     Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz)
[ffmpeg/video] vp9_v4l2m2m: VIDIOC_G_FMT ioctl
[ffmpeg/video] vp9_v4l2m2m: VIDIOC_G_FMT ioctl
...
Using hardware decoding (v4l2m2m-copy).
VO: [null] 854x480 nv12
Exiting... (End of file)
real	0m3.315s
user	0m1.277s
sys	0m0.453s

NOTES:

GDSC = Globally Distributed Switch Controller

Use same code as mmcc-msm8996 with:
s/venus_gdsc/video_top_gdsc/
s/venus_core0_gdsc/video_subcore0_gdsc/
s/venus_core1_gdsc/video_subcore1_gdsc/

https://git.codelinaro.org/clo/la/kernel/msm-4.4/-/blob/caf_migration/kernel.lnx.4.4.r38-rel/include/dt-bindings/clock/msm-clocks-hwio-8996.h
https://git.codelinaro.org/clo/la/kernel/msm-4.4/-/blob/caf_migration/kernel.lnx.4.4.r38-rel/include/dt-bindings/clock/msm-clocks-hwio-8998.h

0x1024 = MMSS_VIDEO GDSCR (undocumented)
0x1028 = MMSS_VIDEO_CORE_CBCR
0x1030 = MMSS_VIDEO_AHB_CBCR
0x1034 = MMSS_VIDEO_AXI_CBCR
0x1038 = MMSS_VIDEO_MAXI_CBCR
0x1040 = MMSS_VIDEO_SUBCORE0 GDSCR (undocumented)
0x1044 = MMSS_VIDEO_SUBCORE1 GDSCR (undocumented)
0x1048 = MMSS_VIDEO_SUBCORE0_CBCR
0x104c = MMSS_VIDEO_SUBCORE1_CBCR

Fixes: d14b15b5931c2b ("clk: qcom: Add MSM8998 Multimedia Clock Controller (MMCC) driver")
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Marc Gonzalez <mgonzalez@freebox.fr>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Link: https://lore.kernel.org/r/ff4e2e34-a677-4c39-8c29-83655c5512ae@freebox.fr
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 12:26:59 +01:00
..
a53-pll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
apcs-msm8916.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
apss-ipq-pll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
apss-ipq6018.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
camcc-sdm845.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-alpha-pll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-alpha-pll.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-branch.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-branch.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-cpu-8996.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-hfpll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-hfpll.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-krait.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-krait.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-pll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-pll.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-rcg.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-rcg.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-rcg2.c clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies 2024-11-18 11:42:53 +01:00
clk-regmap-divider.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap-divider.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap-mux-div.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap-mux-div.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap-mux.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap-mux.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-regmap.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-rpm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-rpmh.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-smd-rpm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-spmi-pmic-div.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
common.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dispcc-sc7180.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dispcc-sdm845.c clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times 2024-11-19 08:44:54 +01:00
dispcc-sm8250.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-apq8084.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-ipq806x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-ipq4019.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-ipq6018.c clk: qcom: gcc-ipq6018: fix terminating of frequency table arrays 2024-11-19 09:22:17 +01:00
gcc-ipq8074.c clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays 2024-11-19 09:22:17 +01:00
gcc-mdm9615.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8660.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8916.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8939.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8960.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8974.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8994.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8996.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-msm8998.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-qcs404.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-sc7180.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-sdm660.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-sdm845.c clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd 2024-11-19 09:22:14 +01:00
gcc-sm8150.c clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src 2024-11-18 11:42:53 +01:00
gcc-sm8250.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gdsc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gdsc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpucc-msm8998.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpucc-sc7180.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpucc-sdm845.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpucc-sm8150.c clk: qcom: gpucc-sm8150: Update the gpu_cc_pll1 config 2024-11-18 12:12:40 +01:00
gpucc-sm8250.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hfpll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM 2024-11-18 11:42:54 +01:00
kpss-xcc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
krait-cc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lcc-ipq806x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lcc-mdm9615.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lcc-msm8960.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lpasscc-sdm845.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lpasscorecc-sc7180.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmcc-apq8084.c clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays 2024-11-19 09:22:17 +01:00
mmcc-msm8960.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmcc-msm8974.c clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays 2024-11-19 09:22:17 +01:00
mmcc-msm8996.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmcc-msm8998.c clk: qcom: mmcc-msm8998: fix venus clock issue 2024-11-19 12:26:59 +01:00
mss-sc7180.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
q6sstop-qcs404.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
reset.c clk: qcom: reset: Ensure write completion on reset de/assertion 2024-11-19 08:44:52 +01:00
reset.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
turingcc-qcs404.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
videocc-sc7180.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
videocc-sdm845.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
videocc-sm8150.c clk: qcom: videocc-sm8150: Add missing PLL config property 2024-11-18 12:12:42 +01:00
videocc-sm8250.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00