arm64: dts: qcom: sc7280: Add venus DT node
Subsystems (4)
PATCH v4 1/1 arm64: dts: qcom: sc7280: Add venus DT node
Add DT entries for the sc7280 venus encoder/decoder.
change since v3:
- added firmware node back.
change since v2:
- removed firmware node.
change since v1:
- added rpmh power domain and opp table.
this patch depends on [1],[2] & [3].
[1] https://patchwork.kernel.org/project/linux-clk/list/?series=449621
[2] https://lkml.org/lkml/2021/4/9/812
[3] https://lore.kernel.org/patchwork/project/lkml/list/?series=488429#
--- arch/arm64/boot/dts/qcom/sc7280.dtsi | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+)
arch/arm64/boot/dts/qcom/sc7280.dtsi +75 -0
@@ -60,6 +60,11 @@ no-map; reg = <0x0 0x80b00000 0x0 0x100000>; }; + + video_mem: memory@8b200000 { + reg = <0x0 0x8b200000 0x0 0x500000>; + no-map; + }; }; cpus {
@@ -850,6 +855,76 @@ interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>; }; + venus: video-codec@0aa00000 { + compatible = "qcom,sc7280-venus"; + reg = <0 0x0aa00000 0 0xd0600>; + interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; + + clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>, + <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>, + <&videocc VIDEO_CC_VENUS_AHB_CLK>, + <&videocc VIDEO_CC_MVS0_CORE_CLK>, + <&videocc VIDEO_CC_MVS0_AXI_CLK>; + clock-names = "core", "bus", "iface", + "vcodec_core", "vcodec_bus"; + + power-domains = <&videocc MVSC_GDSC>, + <&videocc MVS0_GDSC>; + <&rpmhpd SC7280_CX>; + power-domain-names = "venus", "vcodec0", "cx"; + operating-points-v2 = <&venus_opp_table>; + + interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>, + <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>; + interconnect-names = "cpu-cfg", "video-mem"; + + iommus = <&apps_smmu 0x2180 0x20>, + <&apps_smmu 0x2184 0x20>; + memory-region = <&video_mem>; + + video-decoder { + compatible = "venus-decoder"; + }; + + video-encoder { + compatible = "venus-encoder"; + }; + + video-firmware { + iommus = <&apps_smmu 0x21a2 0x0>; + }; + + venus_opp_table: venus-opp-table { + compatible = "operating-points-v2"; + + opp-133330000 { + opp-hz = /bits/ 64 <133330000>; + required-opps = <&rpmhpd_opp_low_svs>; + }; + + opp-240000000 { + opp-hz = /bits/ 64 <240000000>; + required-opps = <&rpmhpd_opp_svs>; + }; + + opp-335000000 { + opp-hz = /bits/ 64 <335000000>; + required-opps = <&rpmhpd_opp_svs_l1>; + }; + + opp-424000000 { + opp-hz = /bits/ 64 <424000000>; + required-opps = <&rpmhpd_opp_nom>; + }; + + opp-460000000 { + opp-hz = /bits/ 64 <460000000>; + required-opps = <&rpmhpd_opp_turbo>; + }; + }; + + }; + videocc: clock-controller@aaf0000 { compatible = "qcom,sc7280-videocc"; reg = <0 0xaaf0000 0 0x10000>;
Signature · 1 line
2.7.4
Hi,
arch/arm64/boot/dts/qcom/sc7280.dtsi line 858
Quoted 5 lines
arch/arm64/boot/dts/qcom/sc7280.dtsi +1
-0@@ -850,6 +855,76 @@ interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>; }; + venus: video-codec@0aa00000 {
Please remove the leading 0 after the "@" sign
Quoted 6 lines
arch/arm64/boot/dts/qcom/sc7280.dtsi +6
-0+ compatible = "qcom,sc7280-venus"; + reg = <0 0x0aa00000 0 0xd0600>; + interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; + + clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>, + <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
arch/arm64/boot/dts/qcom/sc7280.dtsi line 874
Quoted 10 lines
arch/arm64/boot/dts/qcom/sc7280.dtsi +10
-0+ <&videocc VIDEO_CC_VENUS_AHB_CLK>, + <&videocc VIDEO_CC_MVS0_CORE_CLK>, + <&videocc VIDEO_CC_MVS0_AXI_CLK>; + clock-names = "core", "bus", "iface", + "vcodec_core", "vcodec_bus"; + + power-domains = <&videocc MVSC_GDSC>, + <&videocc MVS0_GDSC>; + <&rpmhpd SC7280_CX>; + power-domain-names = "venus", "vcodec0", "cx";
Unless there was a newer revision of [1], the cx pd will most likely
be unused due to it not being specified under opp_pmdomain.
Quoted 44 lines
arch/arm64/boot/dts/qcom/sc7280.dtsi +44
-0+ operating-points-v2 = <&venus_opp_table>; + + interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>, + <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>; + interconnect-names = "cpu-cfg", "video-mem"; + + iommus = <&apps_smmu 0x2180 0x20>, + <&apps_smmu 0x2184 0x20>; + memory-region = <&video_mem>; + + video-decoder { + compatible = "venus-decoder"; + }; + + video-encoder { + compatible = "venus-encoder"; + }; + + video-firmware { + iommus = <&apps_smmu 0x21a2 0x0>; + }; + + venus_opp_table: venus-opp-table { + compatible = "operating-points-v2"; + + opp-133330000 { + opp-hz = /bits/ 64 <133330000>; + required-opps = <&rpmhpd_opp_low_svs>; + }; + + opp-240000000 { + opp-hz = /bits/ 64 <240000000>; + required-opps = <&rpmhpd_opp_svs>; + }; + + opp-335000000 { + opp-hz = /bits/ 64 <335000000>; + required-opps = <&rpmhpd_opp_svs_l1>; + }; + + opp-424000000 { + opp-hz = /bits/ 64 <424000000>; + required-opps = <&rpmhpd_opp_nom>; + };
arch/arm64/boot/dts/qcom/sc7280.dtsi
Quoted 10 lines
arch/arm64/boot/dts/qcom/sc7280.dtsi +8
-0+ + opp-460000000 { + opp-hz = /bits/ 64 <460000000>; + required-opps = <&rpmhpd_opp_turbo>; + }; + }; + + };
Is there a downstream kernel source available for sc7280 to compare against?
I don't see it in sm8350 releases and it's hard to tell out of thin air what values
should be in there.. Unless qcom decides to share some documentation ;)
Besides that, I don't see the driver part being merged neither in linux-next, nor media-next but I may be looking at the wrong tree.
[1] https://lkml.org/lkml/2021/5/19/364
Konrad
Quoting Dikshita Agarwal (2021-06-13 22:59:51)
Quoted 12 lines
Add DT entries for the sc7280 venus encoder/decoder.
Co-developed-by Mansur Alisha Shaik <[email protected]>Signed-off-by Dikshita Agarwal <[email protected]>change since v3:
- added firmware node back.
change since v2:
- removed firmware node.
change since v1:
- added rpmh power domain and opp table.
Quoted 6 lines
this patch depends on [1],[2] & [3].
[1] https://patchwork.kernel.org/project/linux-clk/list/?series=449621
[2] https://lkml.org/lkml/2021/4/9/812
[3] https://lore.kernel.org/patchwork/project/lkml/list/?series=488429#
---
Is this going to be resent?