kernel_samsung_a53x/drivers/clk
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
..
actions Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
analogbits Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
at91 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
axis Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
axs10x Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
baikal-t1 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bcm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
berlin Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
davinci Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
h8300 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hisilicon clk: hisilicon: hi3519: Release the correct number of gates in hi3519_clk_unregister() 2024-11-19 08:44:54 +01:00
imgtec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
imx clk: imx: imx8mq: correct error handling path 2024-11-18 11:42:53 +01:00
ingenic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
keystone clk: keystone: pll: fix a couple NULL vs IS_ERR() checks 2024-11-18 11:42:53 +01:00
loongson1 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mediatek clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data 2024-11-18 11:42:54 +01:00
meson Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
microchip Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmp clk: mmp: pxa168: Fix memory leak in pxa168_clk_init() 2024-11-18 12:13:18 +01:00
mvebu Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mxs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nxp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pistachio Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pxa Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
qcom clk: qcom: mmcc-msm8998: fix venus clock issue 2024-11-19 12:26:59 +01:00
renesas Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rockchip clk: rockchip: rk3128: Fix HCLK_OTG gate register 2024-11-18 12:12:16 +01:00
samsung Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sifive Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sirf Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
socfpga Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spear Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sprd Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
st Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sunxi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sunxi-ng clk: sunxi-ng: h6: Reparent CPUX during PLL CPUX rate change 2024-11-19 11:32:43 +01:00
tegra Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ti clk: ti: fix double free in of_ti_divider_clk_setup() 2024-11-18 11:42:54 +01:00
uniphier Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ux500 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
versatile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
x86 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zte Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zynq Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zynqmp drivers: clk: zynqmp: update divider round rate logic 2024-11-18 12:12:42 +01:00
clk-asm9260.c clk: asm9260: use parent index to link the reference clock 2024-11-18 11:42:53 +01:00
clk-aspeed.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-aspeed.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-ast2600.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-axi-clkgen.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-axm5516.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-bd718x7.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-bm1880.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-bulk.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-cdce706.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-cdce925.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-clps711x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-composite.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-conf.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-cs2000-cp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-devres.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-divider.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-efm32gg.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-fixed-factor.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-fixed-mmio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-fixed-rate.c clk: fixed-rate: add devm_clk_hw_register_fixed_rate 2024-11-18 12:12:43 +01:00
clk-fractional-divider.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-fsl-sai.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-gate.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-gemini.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-gpio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-hi655x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-highbank.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-hsdk-pll.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-lochnagar.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-max9485.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-max77686.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-milbeaut.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-moxart.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-multiplier.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-mux.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-nomadik.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-npcm7xx.c clk: npcm7xx: Fix incorrect kfree 2024-11-18 11:42:54 +01:00
clk-nspire.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-oxnas.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-palmas.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-plldig.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-pwm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-qoriq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-rk808.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-s2mps11.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-scmi.c clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped 2024-11-18 11:43:02 +01:00
clk-scpi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-si514.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-si544.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-si570.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-si5341.c clk: si5341: fix an error code problem in si5341_output_clk_set_rate 2024-11-18 12:12:42 +01:00
clk-si5351.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-si5351.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-sparx5.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-stm32f4.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-stm32h7.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-stm32mp1.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-tango4.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-twl6040.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-u300.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-versaclock5.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-vt8500.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-wm831x.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk-xgene.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clk.c clk: Don't hold prepare_lock when calling kref_put() 2024-11-19 11:32:45 +01:00
clk.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clkdev.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00