xref: /freebsd/sys/contrib/device-tree/Bindings/media/qcom,msm8996-venus.yaml (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/media/qcom,msm8996-venus.yaml#
5fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7fac71e4eSEmmanuel Vadottitle: Qualcomm MSM8996 Venus video encode and decode accelerators
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10c66ec88fSEmmanuel Vadot  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11c66ec88fSEmmanuel Vadot
12c66ec88fSEmmanuel Vadotdescription: |
13c66ec88fSEmmanuel Vadot  The Venus IP is a video encode and decode accelerator present
14c66ec88fSEmmanuel Vadot  on Qualcomm platforms
15c66ec88fSEmmanuel Vadot
16fac71e4eSEmmanuel VadotallOf:
17fac71e4eSEmmanuel Vadot  - $ref: qcom,venus-common.yaml#
18fac71e4eSEmmanuel Vadot
19c66ec88fSEmmanuel Vadotproperties:
20c66ec88fSEmmanuel Vadot  compatible:
21*0e8011faSEmmanuel Vadot    enum:
22*0e8011faSEmmanuel Vadot      - qcom,msm8996-venus
23*0e8011faSEmmanuel Vadot      - qcom,msm8998-venus
24c66ec88fSEmmanuel Vadot
25c66ec88fSEmmanuel Vadot  power-domains:
26c66ec88fSEmmanuel Vadot    maxItems: 1
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot  clocks:
29c66ec88fSEmmanuel Vadot    maxItems: 4
30c66ec88fSEmmanuel Vadot
31c66ec88fSEmmanuel Vadot  clock-names:
32c66ec88fSEmmanuel Vadot    items:
33c66ec88fSEmmanuel Vadot      - const: core
34c66ec88fSEmmanuel Vadot      - const: iface
35c66ec88fSEmmanuel Vadot      - const: bus
36c66ec88fSEmmanuel Vadot      - const: mbus
37c66ec88fSEmmanuel Vadot
38fac71e4eSEmmanuel Vadot  interconnects:
39fac71e4eSEmmanuel Vadot    maxItems: 2
40fac71e4eSEmmanuel Vadot
41fac71e4eSEmmanuel Vadot  interconnect-names:
42fac71e4eSEmmanuel Vadot    items:
43fac71e4eSEmmanuel Vadot      - const: video-mem
44fac71e4eSEmmanuel Vadot      - const: cpu-cfg
45fac71e4eSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot  iommus:
47c66ec88fSEmmanuel Vadot    maxItems: 20
48c66ec88fSEmmanuel Vadot
49c66ec88fSEmmanuel Vadot  video-decoder:
50c66ec88fSEmmanuel Vadot    type: object
51c66ec88fSEmmanuel Vadot
52c66ec88fSEmmanuel Vadot    properties:
53c66ec88fSEmmanuel Vadot      compatible:
54c66ec88fSEmmanuel Vadot        const: venus-decoder
55c66ec88fSEmmanuel Vadot
56c66ec88fSEmmanuel Vadot      clocks:
57c66ec88fSEmmanuel Vadot        maxItems: 1
58c66ec88fSEmmanuel Vadot
59c66ec88fSEmmanuel Vadot      clock-names:
60c66ec88fSEmmanuel Vadot        items:
61c66ec88fSEmmanuel Vadot          - const: core
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadot      power-domains:
64c66ec88fSEmmanuel Vadot        maxItems: 1
65c66ec88fSEmmanuel Vadot
66c66ec88fSEmmanuel Vadot    required:
67c66ec88fSEmmanuel Vadot      - compatible
68c66ec88fSEmmanuel Vadot      - clocks
69c66ec88fSEmmanuel Vadot      - clock-names
70c66ec88fSEmmanuel Vadot      - power-domains
71c66ec88fSEmmanuel Vadot
72c66ec88fSEmmanuel Vadot    additionalProperties: false
73c66ec88fSEmmanuel Vadot
74c66ec88fSEmmanuel Vadot  video-encoder:
75c66ec88fSEmmanuel Vadot    type: object
76c66ec88fSEmmanuel Vadot
77c66ec88fSEmmanuel Vadot    properties:
78c66ec88fSEmmanuel Vadot      compatible:
79c66ec88fSEmmanuel Vadot        const: venus-encoder
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadot      clocks:
82c66ec88fSEmmanuel Vadot        maxItems: 1
83c66ec88fSEmmanuel Vadot
84c66ec88fSEmmanuel Vadot      clock-names:
85c66ec88fSEmmanuel Vadot        items:
86c66ec88fSEmmanuel Vadot          - const: core
87c66ec88fSEmmanuel Vadot
88c66ec88fSEmmanuel Vadot      power-domains:
89c66ec88fSEmmanuel Vadot        maxItems: 1
90c66ec88fSEmmanuel Vadot
91c66ec88fSEmmanuel Vadot    required:
92c66ec88fSEmmanuel Vadot      - compatible
93c66ec88fSEmmanuel Vadot      - clocks
94c66ec88fSEmmanuel Vadot      - clock-names
95c66ec88fSEmmanuel Vadot      - power-domains
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot    additionalProperties: false
98c66ec88fSEmmanuel Vadot
99c66ec88fSEmmanuel Vadotrequired:
100c66ec88fSEmmanuel Vadot  - compatible
101c66ec88fSEmmanuel Vadot  - iommus
102c66ec88fSEmmanuel Vadot  - video-decoder
103c66ec88fSEmmanuel Vadot  - video-encoder
104c66ec88fSEmmanuel Vadot
105fac71e4eSEmmanuel VadotunevaluatedProperties: false
1066be33864SEmmanuel Vadot
107c66ec88fSEmmanuel Vadotexamples:
108c66ec88fSEmmanuel Vadot  - |
109c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
110c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
111c66ec88fSEmmanuel Vadot
112c66ec88fSEmmanuel Vadot    video-codec@c00000 {
113c66ec88fSEmmanuel Vadot        compatible = "qcom,msm8996-venus";
114c66ec88fSEmmanuel Vadot        reg = <0x00c00000 0xff000>;
115c66ec88fSEmmanuel Vadot        interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
116c66ec88fSEmmanuel Vadot        clocks = <&mmcc VIDEO_CORE_CLK>,
117c66ec88fSEmmanuel Vadot                 <&mmcc VIDEO_AHB_CLK>,
118c66ec88fSEmmanuel Vadot                 <&mmcc VIDEO_AXI_CLK>,
119c66ec88fSEmmanuel Vadot                 <&mmcc VIDEO_MAXI_CLK>;
120c66ec88fSEmmanuel Vadot        clock-names = "core", "iface", "bus", "mbus";
121c66ec88fSEmmanuel Vadot        power-domains = <&mmcc VENUS_GDSC>;
122c66ec88fSEmmanuel Vadot        iommus =  <&venus_smmu 0x00>,
123c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x01>,
124c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x0a>,
125c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x07>,
126c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x0e>,
127c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x0f>,
128c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x08>,
129c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x09>,
130c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x0b>,
131c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x0c>,
132c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x0d>,
133c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x10>,
134c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x11>,
135c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x21>,
136c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x28>,
137c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x29>,
138c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x2b>,
139c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x2c>,
140c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x2d>,
141c66ec88fSEmmanuel Vadot                  <&venus_smmu 0x31>;
142c66ec88fSEmmanuel Vadot        memory-region = <&venus_mem>;
143c66ec88fSEmmanuel Vadot
144c66ec88fSEmmanuel Vadot        video-decoder {
145c66ec88fSEmmanuel Vadot            compatible = "venus-decoder";
146c66ec88fSEmmanuel Vadot            clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
147c66ec88fSEmmanuel Vadot            clock-names = "core";
148c66ec88fSEmmanuel Vadot            power-domains = <&mmcc VENUS_CORE0_GDSC>;
149c66ec88fSEmmanuel Vadot        };
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel Vadot        video-encoder {
152c66ec88fSEmmanuel Vadot            compatible = "venus-encoder";
153c66ec88fSEmmanuel Vadot            clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
154c66ec88fSEmmanuel Vadot            clock-names = "core";
155c66ec88fSEmmanuel Vadot            power-domains = <&mmcc VENUS_CORE1_GDSC>;
156c66ec88fSEmmanuel Vadot        };
157c66ec88fSEmmanuel Vadot    };
158