[PATCH v6 0/8] media: qcom: venus: add MSM8939 support

Erikas Bitovtas posted 8 patches 1 month ago
There is a newer version of this series
.../bindings/media/qcom,msm8939-venus.yaml         |  79 +++++++++++
arch/arm64/boot/dts/qcom/msm8939-asus-z00t.dts     |   8 ++
.../boot/dts/qcom/msm8939-longcheer-l9100.dts      |   8 ++
arch/arm64/boot/dts/qcom/msm8939.dtsi              |  23 ++++
drivers/clk/qcom/gcc-msm8939.c                     |   4 +
drivers/media/platform/qcom/venus/core.c           |  47 +++++++
drivers/media/platform/qcom/venus/core.h           |   2 +
drivers/media/platform/qcom/venus/hfi_parser.c     |  10 +-
drivers/media/platform/qcom/venus/pm_helpers.c     | 149 ++++++++++++++++++++-
9 files changed, 321 insertions(+), 9 deletions(-)
[PATCH v6 0/8] media: qcom: venus: add MSM8939 support
Posted by Erikas Bitovtas 1 month ago
This patch series adds support for Venus on MSM8939. It is mostly
similar to MSM8916 Venus, except it needs two additional cores to be
powered on before it can start decoding.

As per Dmitry's request, I am attaching Fluster results and
v4l2-compliance output. Fluster results were very inconsistent and
caused power collapse fails.
H.264: https://pastebin.com/C15qeq5W
H.265 (HEVC): https://pastebin.com/WDsnxvuk
VP8: https://pastebin.com/egAgEm15
v4l2-compliance: https://pastebin.com/VpBhEFc1
Power collapse fail log: https://pastebin.com/rTivMcpK

Signed-off-by: Erikas Bitovtas <xerikasxx@gmail.com>
---
Changes in v6:
- Added a more generic mechanism on blacklisting codecs.
- Reworded a commit for setting Venus core GDSCs to hardware controlled.
- Reworded a commit for adding HEVC decoding to MSM8939.
- Link to v5: https://patch.msgid.link/20260507-msm8939-venus-rfc-v5-0-d7b5ea2ce591@gmail.com

Changes in v5:
- Undid the merge of vcodec_clks, they are split back to
  vcodec{0,1}_clks now.
- Extracted a dev_pm_domain_attach_list() call into a function of its
  own to reduce nesting.
- Added missing "power-domain-names" required property to device tree
  binding.
- Renamed vcodec clocks and power domains to match other Venus bindings.
- Reordered commits and grouped them by subsystems. Now first come DTB
  patches, then clock, then media.
- Removed "status = "disabled"" in the device tree example.
- Link to v4: https://patch.msgid.link/20260506-msm8939-venus-rfc-v4-0-994f5eb22acb@gmail.com

Changes in v4:
- Removed vcodec{0,1}_pmdomains and merged vcodec{0,1}_clks into
  vcodec_clks instead for MSM8939.
- Inlined video decoder and encoder device tree nodes in the driver and
  removed them from the binding.
- Kept vdec and venc methods for HFI v3 separate from HFI v1.
- {vdec,venc}_get() are now called as early as before, since it is no
  longer needed for us to attach power domains to dev_dec and dev_enc.
- Link to v3: https://patch.msgid.link/20260427-msm8939-venus-rfc-v3-0-288195bb7917@gmail.com

Changes in v3:
- Added missing vcodec1_clks to resource struct.
- Removed enc_nodename from resource struct since we include
  video-decoder now.
- Link to v2: https://patch.msgid.link/20260425-msm8939-venus-rfc-v2-0-f69e52b36207@gmail.com

Changes in v2:
- Enabled GDSCs during encoding as well.
- Merged vcodec{0,1}_pmdomains_num into vcodec_pmdomains_num.
- Reworded commit for marking GDSCs as hardware controlled. Same
  situation as in cdc59600bccf ("clk: qcom: gcc-msm8953: fix stuck venus0_core0 clock")
- Clarified the reason for missing firmware-name property in device
  tree.
- Clarified the reason for moving vdec_get and venc_get for later.
- Link to v1: https://patch.msgid.link/20260416-msm8939-venus-rfc-v1-0-a09fcf2c23df@gmail.com

To: Bryan O'Donoghue <bod@kernel.org>
To: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
To: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: André Apitzsch <git@apitzsch.eu>
To: Erikas Bitovtas <xerikasxx@gmail.com>
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
To: Michael Turquette <mturquette@baylibre.com>
To: Stephen Boyd <sboyd@kernel.org>
To: Brian Masney <bmasney@redhat.com>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-clk@vger.kernel.org

---
André Apitzsch (4):
      media: dt-bindings: venus: Add qcom,msm8939 schema
      arm64: dts: qcom: msm8939: Add venus node
      arm64: dts: qcom: msm8939-longcheer-l9100: Enable venus node
      media: qcom: venus: Add msm8939 resource struct

Erikas Bitovtas (4):
      arm64: dts: qcom: msm8939-asus-z00t: add Venus
      clk: qcom: gcc-msm8939: mark Venus core GDSCs as hardware controlled
      media: qcom: venus: add power domain enable logic for Venus cores
      media: qcom: venus: add codec blacklist mechanism

 .../bindings/media/qcom,msm8939-venus.yaml         |  79 +++++++++++
 arch/arm64/boot/dts/qcom/msm8939-asus-z00t.dts     |   8 ++
 .../boot/dts/qcom/msm8939-longcheer-l9100.dts      |   8 ++
 arch/arm64/boot/dts/qcom/msm8939.dtsi              |  23 ++++
 drivers/clk/qcom/gcc-msm8939.c                     |   4 +
 drivers/media/platform/qcom/venus/core.c           |  47 +++++++
 drivers/media/platform/qcom/venus/core.h           |   2 +
 drivers/media/platform/qcom/venus/hfi_parser.c     |  10 +-
 drivers/media/platform/qcom/venus/pm_helpers.c     | 149 ++++++++++++++++++++-
 9 files changed, 321 insertions(+), 9 deletions(-)
---
base-commit: e98d21c170b01ddef366f023bbfcf6b31509fa83
change-id: 20260416-msm8939-venus-rfc-c025c4c74fae

Best regards,
--  
Erikas Bitovtas <xerikasxx@gmail.com>

Re: [PATCH v6 0/8] media: qcom: venus: add MSM8939 support
Posted by Bryan O'Donoghue 1 month ago
On 10/05/2026 10:47, Erikas Bitovtas wrote:
> This patch series adds support for Venus on MSM8939. It is mostly
> similar to MSM8916 Venus, except it needs two additional cores to be
> powered on before it can start decoding.
> 
> As per Dmitry's request, I am attaching Fluster results and
> v4l2-compliance output. Fluster results were very inconsistent and
> caused power collapse fails.
> H.264: https://pastebin.com/C15qeq5W
> H.265 (HEVC): https://pastebin.com/WDsnxvuk
> VP8: https://pastebin.com/egAgEm15
> v4l2-compliance: https://pastebin.com/VpBhEFc1
> Power collapse fail log: https://pastebin.com/rTivMcpK
> 
> Signed-off-by: Erikas Bitovtas <xerikasxx@gmail.com>
> ---
> Changes in v6:
> - Added a more generic mechanism on blacklisting codecs.
> - Reworded a commit for setting Venus core GDSCs to hardware controlled.
> - Reworded a commit for adding HEVC decoding to MSM8939.
> - Link to v5: https://patch.msgid.link/20260507-msm8939-venus-rfc-v5-0-d7b5ea2ce591@gmail.com

Since you've indicated you are doing a v7 here's some more feedback on v6.

- A clear description of what has been tested and verified as working on
   each core. I think we got lost in the weeds of discussing the GDSC
   change, when what I was trying to understand was the bitmap
   of working encoder/decoder, what is particular to each core.

- HEVC decoder only works on 8939 afaict so there's no sense in
   trying to make it do encoder

- Ideally we have one node that works as an encoder and one as a
   decoder - which is pretty standard and normal on this genration
   of hardware.

- If that is not possible then decoder/decoder is also acceptable
   with the caveat that the declared list of decoder formats should
   be true from the perspective of user-space.

   We discussed blacklisting/whitelist particular codes, that's up
   to you to decide in your submission.

   For my part I think a list is better than a strcmp() as you never
   know how complex the logic might end up getting.
> 
> Changes in v5:
> - Undid the merge of vcodec_clks, they are split back to
>    vcodec{0,1}_clks now.
> - Extracted a dev_pm_domain_attach_list() call into a function of its
>    own to reduce nesting.
> - Added missing "power-domain-names" required property to device tree
>    binding.
> - Renamed vcodec clocks and power domains to match other Venus bindings.
> - Reordered commits and grouped them by subsystems. Now first come DTB
>    patches, then clock, then media.
> - Removed "status = "disabled"" in the device tree example.
> - Link to v4: https://patch.msgid.link/20260506-msm8939-venus-rfc-v4-0-994f5eb22acb@gmail.com
> 
> Changes in v4:
> - Removed vcodec{0,1}_pmdomains and merged vcodec{0,1}_clks into
>    vcodec_clks instead for MSM8939.
> - Inlined video decoder and encoder device tree nodes in the driver and
>    removed them from the binding.
> - Kept vdec and venc methods for HFI v3 separate from HFI v1.
> - {vdec,venc}_get() are now called as early as before, since it is no
>    longer needed for us to attach power domains to dev_dec and dev_enc.
> - Link to v3: https://patch.msgid.link/20260427-msm8939-venus-rfc-v3-0-288195bb7917@gmail.com
> 
> Changes in v3:
> - Added missing vcodec1_clks to resource struct.
> - Removed enc_nodename from resource struct since we include
>    video-decoder now.
> - Link to v2: https://patch.msgid.link/20260425-msm8939-venus-rfc-v2-0-f69e52b36207@gmail.com
> 
> Changes in v2:
> - Enabled GDSCs during encoding as well.
> - Merged vcodec{0,1}_pmdomains_num into vcodec_pmdomains_num.
> - Reworded commit for marking GDSCs as hardware controlled. Same
>    situation as in cdc59600bccf ("clk: qcom: gcc-msm8953: fix stuck venus0_core0 clock")
> - Clarified the reason for missing firmware-name property in device
>    tree.
> - Clarified the reason for moving vdec_get and venc_get for later.
> - Link to v1: https://patch.msgid.link/20260416-msm8939-venus-rfc-v1-0-a09fcf2c23df@gmail.com
> 
> To: Bryan O'Donoghue <bod@kernel.org>
> To: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
> To: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
> To: Mauro Carvalho Chehab <mchehab@kernel.org>
> To: Rob Herring <robh@kernel.org>
> To: Krzysztof Kozlowski <krzk+dt@kernel.org>
> To: Conor Dooley <conor+dt@kernel.org>
> To: André Apitzsch <git@apitzsch.eu>
> To: Erikas Bitovtas <xerikasxx@gmail.com>
> To: Bjorn Andersson <andersson@kernel.org>
> To: Konrad Dybcio <konradybcio@kernel.org>
> To: Michael Turquette <mturquette@baylibre.com>
> To: Stephen Boyd <sboyd@kernel.org>
> To: Brian Masney <bmasney@redhat.com>
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-clk@vger.kernel.org
> 
> ---
> André Apitzsch (4):
>        media: dt-bindings: venus: Add qcom,msm8939 schema
>        arm64: dts: qcom: msm8939: Add venus node
>        arm64: dts: qcom: msm8939-longcheer-l9100: Enable venus node
>        media: qcom: venus: Add msm8939 resource struct
> 
> Erikas Bitovtas (4):
>        arm64: dts: qcom: msm8939-asus-z00t: add Venus
>        clk: qcom: gcc-msm8939: mark Venus core GDSCs as hardware controlled
>        media: qcom: venus: add power domain enable logic for Venus cores
>        media: qcom: venus: add codec blacklist mechanism
> 
>   .../bindings/media/qcom,msm8939-venus.yaml         |  79 +++++++++++
>   arch/arm64/boot/dts/qcom/msm8939-asus-z00t.dts     |   8 ++
>   .../boot/dts/qcom/msm8939-longcheer-l9100.dts      |   8 ++
>   arch/arm64/boot/dts/qcom/msm8939.dtsi              |  23 ++++
>   drivers/clk/qcom/gcc-msm8939.c                     |   4 +
>   drivers/media/platform/qcom/venus/core.c           |  47 +++++++
>   drivers/media/platform/qcom/venus/core.h           |   2 +
>   drivers/media/platform/qcom/venus/hfi_parser.c     |  10 +-
>   drivers/media/platform/qcom/venus/pm_helpers.c     | 149 ++++++++++++++++++++-
>   9 files changed, 321 insertions(+), 9 deletions(-)
> ---
> base-commit: e98d21c170b01ddef366f023bbfcf6b31509fa83
> change-id: 20260416-msm8939-venus-rfc-c025c4c74fae
> 
> Best regards,
> --
> Erikas Bitovtas <xerikasxx@gmail.com>
>