[PATCH 0/3] Qualcomm Venus enablement for SDM630/636/660

From: kholk11
Date: Sat Sep 26 2020 - 08:54:26 EST


From: AngeloGioacchino Del Regno <kholk11@xxxxxxxxx>

In this patch series, I am enabling the Venus video (enc/dec)oding
functionality on SDM630, SDM636, SDM660 and their SDA variants.

To reliably achieve this, commonizing most of the v3/v4 pm_helper
functions (while keeping compatibility with the previous bindings)
seemed to be totally legit, as (almost) the whole logic that's been
introduced in the v4 helpers does actually apply to all (in my knowledge)
of the SoCs that are currently needing the v3 ops to *at least*
optimize the power consumption while using this remote processor.

In the specific case of the SDM630/660 family, this was necessary in
order to correctly bring up the clocks required by the Venus subsystem
without using particular hacks in the clock drivers.
This patch series achieves functional video encoding and decoding on
the SDM630/660 family of SoCs.

The testing was done with the following methodology:
- Boot the system (libc with GNOME DE on Wayland)
- Upload a 720p mp4 h264 sample video file [1] on the device
- Open gnome-terminal and use FFMPEG to transcode:
1. Software H264 decoder to Venus HW encoder (wow it's so fast!)
2. Venus HW decoder to Software H264 decoder
- Download the resulting files on a PC and start playback
- Playing back both files works

This patch series has been tested against the following devices:
- Sony Xperia XA2 Ultra (SDM630 Nile Discovery)
- Sony Xperia 10 (SDM630 Ganges Kirin)

[1] https://dvdloc8.com/clip.php?movieid=12167&clipid=1

AngeloGioacchino Del Regno (3):
media: venus: pm_helper: Commonize v3/v4 pmdomains and clocks
management
media: venus: core: Add sdm660 DT compatible and resource struct
media: dt-bindings: media: venus: Add sdm660 DT schema

.../bindings/media/qcom,sdm660-venus.yaml | 153 +++++
drivers/media/platform/qcom/venus/core.c | 68 +++
.../media/platform/qcom/venus/pm_helpers.c | 525 +++++++++---------
3 files changed, 498 insertions(+), 248 deletions(-)
create mode 100644 Documentation/devicetree/bindings/media/qcom,sdm660-venus.yaml

--
2.28.0