Message ID | 20210203113914.1072380-2-bryan.odonoghue@linaro.org |
---|---|
State | Accepted |
Commit | 8d3a1cb32124eaeb3f2efe4889de214d3b658d8d |
Headers | show |
Series | Add dt bindings for sm8250 venus | expand |
On Wed, 03 Feb 2021 11:39:14 +0000, Bryan O'Donoghue wrote: > Add a schema description for the venus video encoder/decoder on the sm8250. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > .../bindings/media/qcom,sm8250-venus.yaml | 153 ++++++++++++++++++ > 1 file changed, 153 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > Applied, thanks!
On Thu, Feb 4, 2021 at 5:39 PM Rob Herring <robh@kernel.org> wrote: > > On Wed, 03 Feb 2021 11:39:14 +0000, Bryan O'Donoghue wrote: > > Add a schema description for the venus video encoder/decoder on the sm8250. > > > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > > --- > > .../bindings/media/qcom,sm8250-venus.yaml | 153 ++++++++++++++++++ > > 1 file changed, 153 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > > > > Applied, thanks! And now dropped. The example has lots of errors and I got tired of fixing them and didn't know if the undocumented properties should be removed or documented. Here's what I fixed so far: diff --git a/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml b/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml index 1d4b1ab63297..fe66de5d91ea 100644 --- a/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml +++ b/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml @@ -116,10 +116,13 @@ examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/clock/qcom,videocc-sm8250.h> + #include <dt-bindings/clock/qcom,gcc-sm8250.h> + #include <dt-bindings/power/qcom-rpmpd.h> + #include <dt-bindings/interconnect/qcom,sm8250.h> venus: video-codec@aa00000 { compatible = "qcom,sm8250-venus"; - reg = <0 0x0aa00000 0 0xff000>; + reg = <0x0aa00000 0xff000>; interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&videocc MVS0C_GDSC>, <&videocc MVS0_GDSC>, @@ -129,12 +132,12 @@ examples: clocks = <&gcc GCC_VIDEO_AXI0_CLK>, <&videocc VIDEO_CC_MVS0C_CLK>, - <&videocc VIDEO_CC_MVS0_CLK>; + <&videocc VIDEO_CC_MVS0_CLK_SRC>; clock-names = "iface", "core", "vcodec0_core"; interconnects = <&gem_noc MASTER_AMPSS_M0 &config_noc SLAVE_VENUS_CFG>, <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI_CH0>; - interconnect-names = "cpu-cfg", "video-mem"; + interconnect-names = "video-mem", "cpu-cfg"; iommus = <&apps_smmu 0x2100 0x0400>; memory-region = <&video_mem>; diff --git a/arch/arm64/boot/dts/arm/foundation-v8.dtsi b/arch/arm64/boot/dts/arm/foundation-v8.dtsi index 05ae893d1b2e..312c076379e1 100644 --- a/arch/arm64/boot/dts/arm/foundation-v8.dtsi +++ b/arch/arm64/boot/dts/arm/foundation-v8.dtsi @@ -36,6 +36,7 @@ cpu0: cpu@0 { compatible = "arm,armv8"; reg = <0x0 0x0>; next-level-cache = <&L2_0>; + next-level-cache {}; }; cpu1: cpu@1 { device_type = "cpu";
On Tue, 9 Feb 2021 at 01:39, Rob Herring <robh+dt@kernel.org> wrote: > > On Thu, Feb 4, 2021 at 5:39 PM Rob Herring <robh@kernel.org> wrote: > > > > On Wed, 03 Feb 2021 11:39:14 +0000, Bryan O'Donoghue wrote: > > > Add a schema description for the venus video encoder/decoder on the sm8250. > > > > > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > > > --- > > > .../bindings/media/qcom,sm8250-venus.yaml | 153 ++++++++++++++++++ > > > 1 file changed, 153 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > > > > > > > Applied, thanks! > > And now dropped. The example has lots of errors and I got tired of > fixing them and didn't know if the undocumented properties should be > removed or documented. Here's what I fixed so far: > > diff --git a/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > b/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > index 1d4b1ab63297..fe66de5d91ea 100644 > --- a/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > +++ b/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml > @@ -116,10 +116,13 @@ examples: > - | > #include <dt-bindings/interrupt-controller/arm-gic.h> > #include <dt-bindings/clock/qcom,videocc-sm8250.h> > + #include <dt-bindings/clock/qcom,gcc-sm8250.h> > + #include <dt-bindings/power/qcom-rpmpd.h> > + #include <dt-bindings/interconnect/qcom,sm8250.h> > > venus: video-codec@aa00000 { > compatible = "qcom,sm8250-venus"; > - reg = <0 0x0aa00000 0 0xff000>; > + reg = <0x0aa00000 0xff000>; > interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; > power-domains = <&videocc MVS0C_GDSC>, > <&videocc MVS0_GDSC>, > @@ -129,12 +132,12 @@ examples: > > clocks = <&gcc GCC_VIDEO_AXI0_CLK>, > <&videocc VIDEO_CC_MVS0C_CLK>, > - <&videocc VIDEO_CC_MVS0_CLK>; > + <&videocc VIDEO_CC_MVS0_CLK_SRC>; > clock-names = "iface", "core", "vcodec0_core"; > > interconnects = <&gem_noc MASTER_AMPSS_M0 &config_noc > SLAVE_VENUS_CFG>, > <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI_CH0>; > - interconnect-names = "cpu-cfg", "video-mem"; > + interconnect-names = "video-mem", "cpu-cfg"; > > iommus = <&apps_smmu 0x2100 0x0400>; > memory-region = <&video_mem>; > diff --git a/arch/arm64/boot/dts/arm/foundation-v8.dtsi > b/arch/arm64/boot/dts/arm/foundation-v8.dtsi > index 05ae893d1b2e..312c076379e1 100644 > --- a/arch/arm64/boot/dts/arm/foundation-v8.dtsi > +++ b/arch/arm64/boot/dts/arm/foundation-v8.dtsi > @@ -36,6 +36,7 @@ cpu0: cpu@0 { > compatible = "arm,armv8"; > reg = <0x0 0x0>; > next-level-cache = <&L2_0>; > + next-level-cache {}; > }; > cpu1: cpu@1 { > device_type = "cpu"; Sorry about that Rob, I thought my build script ran the dt checker
diff --git a/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml b/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml new file mode 100644 index 000000000000..1d4b1ab63297 --- /dev/null +++ b/Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml @@ -0,0 +1,153 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) + +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/media/qcom,sm8250-venus.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Qualcomm Venus video encode and decode accelerators + +maintainers: + - Stanimir Varbanov <stanimir.varbanov@linaro.org> + +description: | + The Venus IP is a video encode and decode accelerator present + on Qualcomm platforms + +properties: + compatible: + const: qcom,sm8250-venus + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + power-domains: + minItems: 2 + maxItems: 3 + + power-domain-names: + minItems: 2 + maxItems: 3 + items: + - const: venus + - const: vcodec0 + - const: mx + + clocks: + maxItems: 3 + + clock-names: + items: + - const: iface + - const: core + - const: vcodec0_core + + iommus: + maxItems: 1 + + memory-region: + maxItems: 1 + + interconnects: + maxItems: 2 + + interconnect-names: + items: + - const: video-mem + - const: cpu-cfg + + video-decoder: + type: object + + properties: + compatible: + const: venus-decoder + + required: + - compatible + + additionalProperties: false + + video-encoder: + type: object + + properties: + compatible: + const: venus-encoder + + required: + - compatible + + additionalProperties: false + + video-firmware: + type: object + + description: | + Firmware subnode is needed when the platform does not + have TrustZone. + + properties: + iommus: + maxItems: 1 + + required: + - iommus + +required: + - compatible + - reg + - interrupts + - power-domains + - power-domain-names + - clocks + - clock-names + - iommus + - memory-region + - video-decoder + - video-encoder + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/clock/qcom,videocc-sm8250.h> + + venus: video-codec@aa00000 { + compatible = "qcom,sm8250-venus"; + reg = <0 0x0aa00000 0 0xff000>; + interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; + power-domains = <&videocc MVS0C_GDSC>, + <&videocc MVS0_GDSC>, + <&rpmhpd SM8250_MX>; + power-domain-names = "venus", "vcodec0", "mx"; + operating-points-v2 = <&venus_opp_table>; + + clocks = <&gcc GCC_VIDEO_AXI0_CLK>, + <&videocc VIDEO_CC_MVS0C_CLK>, + <&videocc VIDEO_CC_MVS0_CLK>; + clock-names = "iface", "core", "vcodec0_core"; + + interconnects = <&gem_noc MASTER_AMPSS_M0 &config_noc SLAVE_VENUS_CFG>, + <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI_CH0>; + interconnect-names = "cpu-cfg", "video-mem"; + + iommus = <&apps_smmu 0x2100 0x0400>; + memory-region = <&video_mem>; + + resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>, + <&videocc VIDEO_CC_MVS0C_CLK_ARES>; + reset-names = "bus", "core"; + + video-decoder { + compatible = "venus-decoder"; + }; + + video-encoder { + compatible = "venus-encoder"; + }; + };
Add a schema description for the venus video encoder/decoder on the sm8250. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- .../bindings/media/qcom,sm8250-venus.yaml | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8250-venus.yaml